As far as I know, xmpp does not guarantee the receipt at the client side. Telegram does.
As far as I know (from my own experience while I'm running my own xmpp/jabber server) as soon as the message has been sent to the xmpp server, it stays in the queue until one of the clients gets online and then message will be delivered. When the client can't establish a connection to the server, the message stays in the queue of the client, until it succeed with the connection to the server (this is also the case when you want to deliver the message encrypted with OTR, but the other client isn't online at the moment; both clients need to be online for end-to-end encryption with OTR). Obviously, when the clients are online, the messages are delivered immediately. But, maybe someone can share more in dept knowledge about this specific situation? Some parts are also dependent on the specific functions (modules/extension) implemented on the clients and server side. See for example: https://xmpp.org/xmpp-protocols/xmpp-extensions/ -- EL