The problem with push notifications is that they need to go through the app provider and incur costs for it, that's not really their fault. If they'd not charge for it, they'd still go through their servers and would lose them money. So putting it behind a paid service you hook up to your self-hosted instance seems fair.
If you want to avoid it you'd need to build patched versions of the app and distribute them yourself to your users, so you pay Google/Apple directly for notifications instead of going through Zulip.