This is the chicken-and-egg problem that all new networks are facing with regard to IPv6 adoption. In order to have a usable network, you have to support IPv4 to all endpoints. But once you have v4 at all endpoints, the incentive to run v6 is greatly diminished.
As always, v6 needs a "killer app" that Grandma wants to use that is unavailable over the v4 internet, and then network administrators could use the actual demand from their customers as a justification for moving to v6. Unfortunately, at the moment, the list of v4-only must-have apps is still greater than the list of v6-only must-have apps.
Amusingly that's how mobile/smartphones are supposedly run: the devices get IPv6-only, and if they need to hit an IPv4-only address they are CGNATed.
* https://www.internetsociety.org/resources/deploy360/2014/cas...
* https://blogs.akamai.com/2016/06/preparing-for-ipv6-only-mob...
They certainly could be using CGNAT, but that seems like a weird way to do it.
How are you able to tell with IPv4? You cannot run ifconfig on an iPhone, so how are you determining that?
Maybe we've done too early (it was about five years ago maybe, I don't really remember exactly) and now tooling is better, idk