From my experience most ISPs don't give publicly routable addresses anymore, just throwing everybody behind CGNAT (currently I pay extra 3$ monthly fee for static routable IP, but not all providers offer it). And IPv6 is usually still not deployed.
As the other comment says, I've never seen CGNAT in the US. I'm sure it's deployed in some cases, but I've never had to deal with it.
I'm confused about it though. For some applications and games you need to connect peer-to-peer for them to work correctly. How is it possible to connect to a peer with some random port open (e.g. 48295)? It doesn't seem like the ISP could know that the request was aimed at you, if something like UPnP isn't being used. Or does CGNAT simply disable all incoming connections, breaking p2p applications entirely?