I think you're right. They should be able to charge what they wish. But if you agree to that, you should also agree that Microsoft should be able to take a 30% cut of any Windows application. And charge developers a fee to have the privilege of writing code on Windows. And prevent any application from accepting payment in any other form than the Windows Store payment system. And prevent you from displaying other payment options.
After all, it's their OS. They don't owe anyone access to their ecosystem.
In the early days, to develop for MS-DOS or Windows, you had to pay for development languages - which Microsoft sold for $300 in the early days for MS-DOS and likewise same for Windows.
Heck, you know what the first GNU software project was? GCC. Why? Because if you bought a Sun, HP, SGI or other Unix workstation, it didn't come with a compiler. You had to buy the compiler package at many thousands of dollars. GCC wasn't the best compiler, but it was available free, and all you needed was someone to compile it for you.
Anyhow, also consider what the market would do. Had Microsoft done this, perhaps we'd see a more vibrant desktop OS marketplace, instead of a complete domination by Microsoft in the end.