#IPv6 #ULA is Broken (in Dual-stack Networks)
https://blogs.infoblox.com/ipv6-coe/ula-is-broken-in-dual-stack-networks/
Yes, "routed GUA > NPTv6+GUA > NPTv6+ULA"
Buying a GUA to reserve the address space, but not actually routing it (i.e. using NPT from your ISP) -- instead of a ULA -- is a nice trick (and fixes precedence issues).
However if you accept this, then there is a case for ULA when buying a GUA is not feasible.
e.g. Container (or virtual machine) network that is created on the fly.
No real chance to buy a GUA.
Working in software dev, I may spin up a small local virtual network with a few endpoints.
For this scenario you may use NAT66 if the devices need to call out (or NAT64 as relevant).
More likely access may be through a reverse proxy, e.g. one of the containers is one the internal network + port mapped.
I guess I could buy a GUA and reuse it; but what about if I want to put up an example for others to download and run -- can't really have step 1 "buy a GUA".
Same for a default internal network for something like VMWare.
Your external network could be bridged (so use the IPv6 range from your main network), but what about a private network?
(Again, you could buy a GUA and use that, but that isn't a useful default)
The cases for ULA are small, but do exist.