IPv6 should have supported NAT like IPv4, not dragged its heels by begrudgingly implementing it years/decades later (and still not all support IPv6 NAT so the problem isn’t yet solved).
NAT, as much as you hate it, makes deployments easier and quicker and simpler for your average business. I don’t have to worry about BGP, or if my ISP has given me a /64 only or can they do a /60 or /48.
A gradual migration would have allowed both types of approaches to be used. Some would start with IPv6 using NAT, and other more switched on orgs could go straight away with NAT-free IPv6 networks. And lets face it, this has been a very gradual 20 years migration…
i suppose that is way less than what a switch to v6 would cost?