1. It’s not functionality people were already used to getting for free, so they wouldn't feel like something was being taken away.
2. It's something people have been, quite vocally, asking for for a very long time, so you know that they, well, actually want it.
3. It doesn't lend itself to complaints because typos feel like they're “your fault,” and so it feels more understandable to pay to "fix your mistake."
4. And it can be billed as a pure convenience: "you can always just delete the post and repost it". Even though this misses the point that you lose your retweets, it just adds to point (3) that it feels like a hack they're allowing you to do to fix your mistake.
5. It doesn't negatively affect any existing user dynamics. When you charge a subscription, it's natural to feel like you shouldn't see ads anymore. "What am I paying for if I still see ads?!" This feature is completely orthogonal to every other existing revenue stream.
If they would have just done this at the beginning, I think people would have actually cheered it on, and it doesn't affect any existing user dynamics. No devaluing of blue checkmarks, no risking losing tons of users by making it a for-pay service, and again, there's no hard ceiling on how much revenue you can generate from a single user.
And guess what... a year later, they can still also offer a subscription that gives you 20 edits a month, or 300 edits a year if you pay all year up front, or something like that. So you can still get your subscription payments. And critically, unlike previously, you know what you're paying for. The messaging is simple and you can spin it as a user-friendly move: "Oh wow, the new edits feature is so popular, we decided it made sense to give people a way to get edits cheaper. Our new subscription pricing saves you money!"