IPv6 doesn't have NAT, it has different addresses for global and local scopes, but your OS never translates between these addresses and it doesn't need to keep a table of translations & connections, as you'd have with IPv4 and NAT.
Technically you can do NAT with IPv6, just almost nobody ever does it for the reasons you specify. It's pointless to do NAT when there is no address shortage.
In the early to mid 90's, nobody did NAT with IPv4 either.
Network Prefix Translation or NPT is the equivalent of NAT in IPv6. Let's say you have six WANs (I do in the office) and each has its own IPv6 allocation and BGP and a personal allocation is not available.
Your client machines don't know what is going on at the border, so they can't "choose" a route out unless you turn the lot into routers and use OSPF or something internally.
So NPT. Your router sends flows out over links and rewrites the prefix accordingly for that link. Its a bit horrible and I've decided not to bother yet.