NAT64 is more and more used instead of CGNAT (well, it's still CGNAT to an extent), but I don't really see one being advantageous over the other. Only that there are only IPv6 semantics when using NAT64, so stuff like roaming, privacy extensions, etc. works, and you don't have to rely on dual-stack.
I think the big advantage to NAT64 is identifying the pain points (incompatible equipment, applications, etc) in an IPv6-only world. And it really is a clear transition path to IPv6.
> NAT64 is an IPv6 transition mechanism that facilitates communication between IPv6 and IPv4 hosts by using a form of network address translation (NAT). The NAT64 gateway is a translator between IPv4 and IPv6 protocols, for which function it needs at least one IPv4 address and an IPv6 network segment comprising a 32-bit address space.
An excellent `just-works` example is https://github.com/toreanderson/clatd