Microsoft can control who speaks for Microsoft and give official support on their behalf, Apple can control who speaks for Apple and give official support on their behalf, but nobody can claim to speak for the whole Linux (or better yet, OSS) community nor is 99,99% of the support you get in any official capacity. Sure you can try to create walled off areas like Ubuntu's Absolute Beginners Section where moderators can use the ban hammer on douchebags but in general there's no telling what you'll run into. To use your analogy, it's more like a potluck dinner than a restaurant and in a large group there'll always be asshats. It doesn't help that just like you have community members that piss in the well you sure have users that piss in the well too, if you ever have to deal with any obnoxious, persistent, over-entitled twats you're likely to swear off offering support forever.
The other fundamental issue is that many of these people are essential to the software development, they just don't give a damn about your problems. Say what you will but if it comes down to a more-or-less savvy user or a key code contributor, most will side with the "not our problem, read the manual or code a patch yourself" attitude. A lot of projects have very poor separation between development and support and developers that don't want to be bothered by support, bad combination. And in the end you're not their boss so if you bring it up they might just take their ball and go home, start a competing fork or just make a giant mess of everything. Even so, some people still need to be evicted from projects - abuse of users is usually not grave enough though.