The issues I see:
* Devs can't make paid upgrades: to make a paid upgrade the options are a new app, except the security model for the apple app stores ties a lot of things to the app id, so a new app disconnects the user data from the old app. To keep the information tied together the "solution" is subscription or in app purchases (which also means you essentially have to have your app contain multiple versions embedded and you base what actually loads based on user purchases).
* Devs can't do free trials: again the option are subscription or in app purchases.
The alternatives are subscription or in app purchases, but there's no way for a user to distinguish an app that has those as a mechanism to support upgrades from a bait-and-switch app: As a result if an app is listed having either I generally don't consider installing it (esp. if it requires an initial payment) which is unfair to the reasonable devs but there are so many bait and switch apps nowadays (App Store review technically has a lot of value, but that this kind of BS is allowed remains a plague and substantially undercuts the benefits).