Compare all these different ways you have to install and update software on Mac:
- The app store - obviously this is what Apple wants, but they have rules about what can and can't go there and the rules don't match the rules their customers want (e.g. easy in-app purchases) but instead what Apple wants (more money).
- Download software from a website and install it. This works OK, except that the vendor has to get a key that is verified by Apple (which has its own legal paperwork for the developer to pretend they read). If they don't get a key then the user has to follow this Apple knowledge base article that includes advice to control click, use the context menu, answer a dialog and then it will work. That was simple, right?
- If you downloaded software from a website, it might update itself (For me, Sublime, Source Tree, and Adium all do this). OR, you might have to periodically go back to that website and see if a new version is available and then download and install it (Looking at you, Dropbox).
- Homebrew, Macports, etc. What is this, Gentoo? Since when is compiling source all the time a user friendly idea.
- My favorite scenario? When I need to get software X which comes via one channel. But I have to also get something it requires which comes via a different channel. Rough.
The App Store is clearly the most user friendly option, but as a user or developer I have no control to adjust its behavior. I can't say "Get stuff from the official Apple channel but also get new software and updates from the Dropbox website.
Glossing over the issues with unsigned packages, having a variety of different methods to install software that are inconsistent with each other means I have to spend more time remembering and researching the software.
Compare that to Linux. Most distributions have a software library. As a user you can easily configure it to include a mix of commercial or open source software. All updates can easily happen via this channel. Participating in the channel as a developer requires no contracts, you just have to put files on a server and tell your users to import some metadata about where your channel is and how your files are signed. Dependencies are managed.