There are some exceptions where a fee is ok like when it's actually putting the business out financially, like Garmin & Iridium satellite service agreements, Garmin has little choice...but clearly not the case for Adobe
If you're not happy with a cancellation fee, that's what the monthly pricing is for—you pay more month to month but can cancel any time. It's a very normal trade-off. The only real alternatives Adobe has to a cancellation fee are to only offer monthly pricing or forbid cancelling an annual contact at all.
It isn't true that this is the only option. Instead of onerous lock-in like a gym membership they could have a sliding scale -- the longer you pay for it, the cheaper it gets. Their decision to go for annual lock-in is short term thinking.
This seems pretty fair to me, when you signed up for the contract, those purchases figure into their operations.
Reverse the paradigm, if they cancelled providing you these services, would you expect a refund, or would it be a money grab to expect to get your money back when they violated the terms of the agreement?
If a user signs up for a year contract, the business has certainty of future income. The business gives a discount for assurance of that future revenue.
If the user cancels early, the cost is the lose of that future revenue on the balance sheet - and this does influence the business.
You can't lose other people's money you never received.