Let me guess, you live in and/or operate setups in the US?
Yeah, the US has disproportionately many IPv4 addresses.
Meanwhile if one of our services doesn't need IPv4, it doesn't get IPv4. And if it does need IPv4, it's increasingly common to be IPv6 behind an IPv4 reverse proxy.
And as a result, due to the extra reverse proxy, you'll increasingly just get worse performance on IPv4 than native IPv6.
When you do it near the service being provided, and only for your own services, it's called a Reverse Proxy.
You are right that these two things are similar, but they aren't identical; CGNAT attempting to handle you trying to talk to who knows what on the Internet (e.g. game servers, VoIP) is a much harder problem to solve than a Reverse Proxy handling a known set of protocols you want to expose.
And, yes, an unloaded CGNAT or Reverse Proxy is not noticable in terms of performance. However, both of them have load limits where you need to scale them up, and particularly CGNAT frequently degrades (due to larger tracking tables) before completely falling over.