What you said would make some sense if the client connected to someone in the middle who then connected to the server. Instead, the client connects to the server, but when data comes back it is forwarded to someone in the "middle" (really, off to the side) who then processes it and returns results to forward back to the server.
In essence, the device is in the middle of a connection from the developer to the service, as opposed to the developer being in the middle of a connection from the device to the service. In such a configuration you are not getting any of the benefits you are talking about, as if the device isn't online it won't be able to maintain the connection on behalf of the developer's server.
(Also, I must point out the normal situation with such messaging apps on iOS is that you get them from the service itself. In addition to being less common on Android, it is thereby interesting to point out to people who might not realize the app is implemented in this weird way--some people who even analyzed it assumed this was a side-channel for analytics--so they can make the right call for themselves.)