To be fair that might just be a poor implementation? XMPP can support push notifications just fine now:
https://xmpp.org/extensions/xep-0357.html https://modules.prosody.im/mod_cloud_notify
There are some remaining issues with push (mostly on iOS as far as I know), but it’s all to do with OMEMO. OMEMO is kind of like the signal protocol but in XMPP. This is kind of moot for corporate XMPP, though, as you probably aren’t using OMEMO.
The OMEMO issue is that the contents of the message are end-to-end encrypted so you can’t simply send the notification to devices. I believe conversations on Android may just keep a socket open (or maybe that’s just the fdroid version?) so it just manages it with background tasks. And on iOS monal does what signal does and will use push notifications as a trigger to pull messages from the server. Siskin on iOS just sends you a “you have a new message!” notification instead because they don’t want to spin up the radio to fetch messages in order to preserve battery life. So basically push works fine on monal, and Siskin also has working push but you don’t get message contents.