I use groups for different purposes. A few one were already described: limiting access to certain categories, allowing a non-staff group to facilitate a specific category, identifying certain user affiliations…
Another goal can be to create a collective email where anonymous people can send a message, e.g.: a general contact group, a support email, etc. Once you have a Contact group with associated email email@example.com, any member of the group can reply, and a whisper conversation can happen within the group before replying to the original post while keeping track of which group members read or replied to a specific message.
I also use groups to remember the origin of new people joining the forum, e.g., creating a group for an event and making all users who join the forum during this event a member of this group.
On the SocialHub we have several groups for teams that can be associated with category moderation or specific tasks: it’s often easier to address a group than specific individuals when people collaborate or user count gets too high to keep all people in mind at once.
Some plugins can take advantage of groups, e.g., discourse-policy or polls can limit response to a group.