It provides a partial solution. As a developer, you can issue a new update which has the new features introduced, and offer an in-app purchase to unlock those. However it it means you have to continue to maintain the "old" version of the app (i.e. the app without the new features enabled). For one version this isn't too much of a problem, but by the time you've released three or four major version upgrades over a period of 6 years, you've got quite a few code paths to test.
It also only really works if the things the new version introduces are features that can be easily isolated from the rest of the app. If a developer were to do a major rewrite of a core part of the app (e.g. a rewrite of core functionality which improves performance/usability) then IAP isn't a viable option. So it's a significant inconvenience.
The other option of course is a subscription model, which is the direction a lot of large developers (Adobe, Microsoft) are heading in. If the developer has an ongoing source of revenue from subscriptions, then that could cover the costs of developing new versions. However not all users want to be forced into a subscription, particularly for a high-end productivity tool that they are buying to use over a period of many years.