To create and access (or not) currently can be done by User Roles.
I suppose you mean that there may be groups accessible only to certain user roles.
It seems to me that the path is to make a group plugin that uses the same tables in the database (or that imports them) and add this feature: the creator of the group can establish who can access and who does not. We should also control the publications in NewsFeed and keep in mind that there are many plugins that show group content, there are also statistics of the groups in the user profile. It can be frustrating to see that a person has 300 posts and you can't see any, in some websites it can be interesting to encourage you to become a paid member but in others you may look for a secret chat site in which you don't know in any way that exists.
"Access by invitation" can also be an interesting improvement, in the style of WhatsApp groups.
It's a lot of work, but it can be done. The group plugin has many shortcomings: It does not memorize what you have already read, you cannot move a post or a subject from one place to another, you cannot subscribe to new conversations (only to existing ones) and you cannot even put "I like". Maybe it's time to make a more modern and powerful group plugin.
And the same for blogs.