There are several ways to address XMPP energy drain, some of which were proposed as XEPs. Google uses one of such methods (google queue). Facebook uses another.
You are right, a permanent connection isn't that great on mobile phones, but as a custom XMPP service you could just use push technology like every other app, too. That's what e.g. Google and Facebook are doing.
Beejive and IM+, two common mobile IM apps with XMPP support, are doing this, too. The only downside is, that since they don't want to store you credentials, you have to run the app to reconnect to your XMPP server and delegate that connection to their push servers. This is just a bit annoying when either jabber.org or their servers have connection errors.