Why is charging a flat fee never an option? Just take $200 and let me do my thing. Taking any % of my income on the regular as a kind of existence tax is detrimental for the ecosystem.
2. Fixed costs, like development effort, need to be distributed across their customers. Fixed fees will be negligible for big customers and unaffordable for small customers.
3. They're gatekeepers for these devices. If you want your app on a device they can control you need to pay their fees. So as long as the fees are not big enough to deter a developer from publishing their app for that device, they can charge whatever they want.
I think revenue sharing is the best pricing model for an app store, but without abusing the gatekeeper status the fees would likely be significantly lower.