I would like to have a Group Calendar web part on a communications page that is visible to my entire organization, but only editable by a couple of users. This would contain dates for events that affect the entire org (pay cycles, holidays, board meetings, etc.). Is there a best practice here, or should I literally just create a group that has every member of the org as a member? I would imagine that this is a very common use case and I don't want to make it any more complicated than it needs to be.
I would suggest just using a traditional SharePoint Calendar list for simplicity's sake as I believe the Group Calendar is designed for more collaborative sharing. I'm hoping there will be some announcements at Ignite next month in regards to modernizing the SharePoint Calendar list template, but even if not - you still have the ability to use the Events web part on modern pages to display calendar items from the traditional list. Once you set up your calendar list, you can just assign permissions just like you would with any other SharePoint list or library. In addition, the traditional calendar gives you the ability to customize the categories to align with the examples you gave in your original post which you could then use to create custom views and filters down the road if you wish.
The benefit of using a SharePoint Calendar is that you wont have to add all users to the group as well as being able to connect it to Outlook client for editing and viewing items based on the SharePoint permissions.
Bear in mind that the calendar will not work well on mobile but it is the best solution that is available at the moment and is what I have just deployed for an org wide calendar for a clients Intranet.