The XSF (XMPP Standards Foundation) are working hard to make XMPP more mobile friendly. (disclaimer: I'm an XMPP board member).
There are three problems to solve:
1. knowing when to retrieve messages (push notifications)
2. retrieving messages (message archive management)
3. synchronising messages between devices (what this solves)
More background: XMPP is designed around keeping a connection open to the client and pushing through updates and new messages. These assumptions worked well in a desktop environment on a solid TCP connection. But for power, intermittent network, and mobile OS design reason, holding open a socket isn't ideal.
Push notification work because the OS provider (Apple, Google, Mozilla etc.) keep one socket open and then push through important notifications. This keeps the phone's radio from powering up for silly things like "contact came online/went offline" type messages.
A push notification might be "xyz posted ... ". Your phone needs to now come online and synchronise messages that might have been posted on your tablet or desktop client. Hence XEP-0280. It helps resync messages from other clients.
The XSF is also writing up a push notification XEP that makes it easy for mobile apps to use XMPP as a signalling channel and throw out push notification where necessary.
I guess the alternative would be PGP, which has disadvantages, but no sessions.
I can't see how OTR would work when one client is offline since they need to both be online to do the key exchange dance. Happy to be corrected.
this is especially important for mobile clients on iOS or Android or web clients. I don't see another way to have OSS multi-client chats with XMPP similar to hangouts/Facebook/WhatsApp.