To address your counter point: it is all a mater of implementation, implementation, implementation.
1) I don't think it is unreasonable to say that developers should maintain the features they've already been paid for gratis.
2) It require planing from the get-go within your app, you can't tack this on after the fact. Basic features are covered by the initial purchase of the app. Additional features (AKA what one would want to charge for with a major version upgrade) or perhaps feature "packs" are provided via In-App purchases. New users always start out at the same level, requiring purchases for new features. Features already purchased to be restored via the facilites available in StoreKit.