It seems that people still argue on whether to use NAT with IPv6 for its side-role as a firewall hiding inner network from the outside (providing user anonymity and security as well). I am wondering though if we could not use an actual firewall for this purpose to secure an inner IPv6 host against outsiders (this however won't protect the user anonymity) ?
NAT is mostly a non-issue with IPv6. As you say using a firewall (which should even be used with NAT, because NAT is not a proper security measure by itself) is the proper solution.
Hiding the client's IPv6 address will only cause problems for protocols, traceability and security's Knowing the client's actual address makes writing firewall rules so much easier, and therefore prevents mistakes.
As far as the technical community is concerned the consensus is to avoid NAT with IPv6.
PS: NAT64 is used for IPv6-only networks to connect to the IPv4 world, but the IPv4 world is already full of NAT so it's considered an acceptable solution.