I like NAT. It sort off keeps the internet outside our private internet while still letting you access all the (public) internet. So security wise a nice thing, so to speak. In your case though, a nightmare. That's why NAT doesn't exist in IPv6. So first suggestion, can you get it to work with IPv6? Second suggestion, call T-Mobile and complain. Tell them you need to get a public IP address assigned, so you can access your Raspberry or anything else you like, e.g. video surveillance. You may need to complain a lot until you get to someone who understands what you are talking about.
Third suggestion, would a VPS in the internet be sufficient for your needs? VPS are cheap, powerful and can be used for a lot of things.
If all fails and you really need to have your Raspberry accessible from the internet, get a VPS, install the flavor of Linux that you like on it and setup a VPN from your Raspberry to the VPS. So the Raspberry is the client and the VPS the server.
Since you don't have a permanent IP address, you will need to configure the VPN to autodetect changes in IP configuration. For ssh you would need some custom scripts, since that feature is not included in ssh. "Mosh" may be a better alternative to ssh.
Personally I would look at StrongSwan with ikev2 https://en.wikipedia.org/wiki/Internet_Key_Exchange for a vpn that can handle changing IP on the client side. Google for Roadwarrior configuration with strongswan.
I hope that helps to get you started.