1. Users expect their apps to work on their computers, tablets, and phones, which generally means you need to provide some ongoing service to keep your data synced between all of the devices. (For some simple apps you can get away with using a third-party service, e.g. Dropbox or iCloud, but many apps with complex data will need their own custom-built solutions.) Depending on the kind of data you are storing, this can get expensive.
2. Users expect perpetual upgrades for every new version of iOS/macOS/Android/Windows that comes out. This obviously requires development work, especially since iOS/macOS/Android are annual releases at this point.
These ongoing costs imply that some kind of recurring revenue is necessary to keep the software running and up to date, which is why the move to subscription revenue has become more popular lately.
Besides, I question the premise that "perpetual" licenses have ever truly been perpetual except in name only: eventually that software you bought will stop working on newer operating systems and devices and you'll have to buy a new version anyway.