It's a consequence of having platforms instead of protocols.
Suppose you want delivery notifications for your packages. The seller, by contrast, wants to spam you with marketing.
If getting the notifications requires you to install their app, they're going to shovel any spam into it that they can, and then they're writing the code that runs on your device. Whereas if the software on your device is controlled by you and the notifications are received using a standard protocol, you (or someone like uBlock) can create filters to only show the notifications you actually want and discard the spam.
But for that to actually work you need the software running on the client to be under the control of the user independent of which device or service they're using, and subject to competitive pressure. Otherwise the platform uses is as a means for lock-in and then filters your notifications in the ways that benefit them rather than you, or just does a lazy job because they know you've been deprived of having a lot of other alternatives.
Unless the task is extremely well defined, protocols don't really work.
Imagine you're a shipping company and lock yourself into a parcel tracking protocol. You then decide to offer the innovative feature of parcel lockers, which need a code (or an action on your device) to open. How are you going to make the thousands of weird homebrew clients that people are using on their jailbroken Nintendo Switches or whatever to behave?
That's easy. You publish the API documentation and supply a reference implementation. Anyone can use your reference implementation immediately and the person who wants to use their own code on a jailbroken Switch can do that as soon as they implement the API, or their own fork of the reference implementation.
The service doesn't have to maintain every implementation, they just have to document a stable API and not actively impede third party code.
> But for that to actually work you need the software running on the client to be under the control of the user independent of which device or service ...
In other words, you need the user of the software to pay for it's development. Since that won't happen ...
That isn't the only way.