Los puntos 1 y 2 estarían solucionados con un elemento de red adecuado, un firewall en el operador. No tiene nada que ver con que el direccionamiento del usuario sea público o privado.
El punto 3 es consecuencia de una nefasta planificación por parte de los operadores. No han tenido la vista que deberían, y se han expandido sin tener los recursos necesarios ni implementar las tecnologías adecuadas. Ahora sus usuarios sufren las consecuencias. CG-NAT es un parche, la solución a largo plazo es despedir al responsable de que ese CG-NAT se haya tenido que poner.
Por cierto, hasta hace no mucho pepephone esto lo hacía muy simple:
gprs.pepephone.com asigna al cliente una dirección IP pública, mientras que gprsmov.pepephone.com asigna dirección privada. Es decir, los dos pueden hacer lo mismo (navegar, whatsapp, vozip, juegos, etc.), pero sólo si tienes una dirección pública puedes utilizar servicios en los que tu equipo actúa de ‘servidor’ como, por ejemplo, poner un servidor web o de juegos o tu propio servidor de correo.
Una solución bien hecha, sea IPv4 o IPv6 sería exactamente esa. Tener 2 APNs, uno dando IPs de un rango protegido por un firewall descartando todo lo que entre a los clientes para uso general, y otro APN de un rango sin proteger como el que tenía pepephone, para los clientes con aplicaciones que requieran conexiones entrantes. Y en esa solución como ves, no aparece la palabra "NAT" por ninguna parte.