I'm a heavy user of clubs on one of my Invision communities and wanted to provide some more information / clarification:
1. All members of your greater community are immediately and automatically members of Open & Public clubs. Those club types are, by definition, open and exposed to the entire community by default. It's literally in the name of the club type 🙂 . The difference between them is whether or not you need to join to post, but you will always view the content.
Streams, by default, show all available content that members can see. This means they will see club content from Open & Public clubs, by default.
2. I am not a fan of editing the filter for Streams, because if you exclude club content, it will ALWAYS exclude club content even after they join the club. My assumption is that when members join the Microsoft club, they would want to see the Microsoft club in their stream when they return in the future.
3. I personally think your best solution is Closed clubs, which will more than suffice for your use case. By default, users (for example, brand new members to your overall community) will not see any content from any Closed club until they specifically join Closed clubs. Which is what you want. Everyone is happy.
Even though Marc is correct that clubs of Private type will always prevent any public content, I want to explain that in order for Closed clubs to expose public content, the club owner would have needed to intentionally define that section to show public content. Don't do that, duh! Slap the hand of your club owner if he tries to define a new section that "anyone can view." If you stay away from the options of letting a section intentionally become public, then the content of your Closed club will stay private. Which is what you want. Members join the club, they see the content. Members who don't join the club, won't see the content.
Make content public? appears when you add a new section for Topics in a Closed Club.
I am not a fan of Private clubs and want to add a clear warning that Private clubs won't even show on the club list, so you lose all discoverability. It's literally hidden. It's like a private, hidden, secret club that is invite-only, and you will only see the club after you accept an invite. If you stick with Closed clubs, the club name and description will appear on the list of clubs, and members can browse the vendor user group they want.
As you identified, the one custom coding you would need is to auto-approve member requests to join the closed clubs.
4. Some additional tips:
You can choose to let club content areas co-exist with the normal content areas. For example, club forums that members joined can appear in your community Forums, and will append at the bottom. This allows your community to commingle content and makes it easier for your users to browse and participate, instead of needing to go specifically to the Clubs app.
From a behavioral standpoint, this option is great once it's been set up. But users will need to navigate to Clubs app in the beginning. If you want to encourage discoverability, I would recommend you create a new forum of Redirect type, which directs users from the community Forum to the Clubs.
If you have that many clubs, you may want to think about defining Extra Fields that can be filterable on the front-end. This could be things like industry vertical, industry application, user groups, etc.
5. Even though I've been talking about Clubs ad nauseum, I think it's important to holistically ask if Clubs is the appropriate solution if the only thing you're needing it for is discussion. Clubs are not another tool, it's an entire kit of tools. Just be aware that from a user's behavioral standpoint, Clubs introduces a layer of user complexity.