The issue is that a long lived TCP connection consumes some valuable RAM and a port number on a valuable IP address. It costs carriers something for push notifications to work, so, they tend to aggressively close long lived TCP connections that aren't going to recognised push datacenters.
For that to work you need business relationships with the carriers of course, stable IP addresses, and enough users of your push service for it to be worthwhile.
IPv6 would fix it by eliminating IP scarcity and CGNAT, but most mobile networks aren't provisioning handsets with IPv6 addresses.
https://web.archive.org/web/20170708204409/www2015.wwwconfer...
Whether FCM uses these technologies, I don't know. I lack the hardware to easily inspect the mobile radio traffic on the necessary level (the best would be a DIY stingray based on one or two OsmocomBB-capable GSM phones, maybe combined with a Faraday cage to place one of them into, together with the smartphone.
Moxie has cited this previously with no proof, despite protocols like xmpp performing similarly on mobile networks.