Think of it as "tagging" users. Instead of a user fitting a single pre-defined category, you can add tags to a user.
To give an example, let's say you have both a Discord channel and a Slack channel with the same 10 people working on a project, 7 of which are software developers. To mention the developers, your Slack option is either @everyone (including 3 non-developers) or individually. On Discord you can create @developers and add only those seven, not bothering the other 3.
You can really go buckwild with that basic concept: only admin can tag @everyone, only @talkers can join a voice channel, only @projectmanagers can run some bot, only @collaborators can post to #project, @watchers can read #project but not post, while those that are neither @collaborators nor @watchers don't even see the channel... And in #otherproject you can have those same people in totally different groups and with different roles.
Way more customizable than by just having public/private channels and @everyone at your disposal, as Slack does.
Slack user groups are much less powerful than Discord roles. Slack user groups are _only_ a way of bulk notifying users. Discord roles control effectively both views of your server, and permissions (though why "Pin Messages" and "Delete Other User's Messages" are still combined into a single "Manage Messages" checkbox is a glaring flaw in that granularity).
And some other features like colours which are nice when you want mods to stand out for public servers, or teams for some sort of competitive event server.
Tagging users is also possible in slack. I don't know if permissions by tag is possible, but the basic concept of "@ these 7 people" has been there for a while.
To give an example, let's say you have both a Discord channel and a Slack channel with the same 10 people working on a project, 7 of which are software developers. To mention the developers, your Slack option is either @everyone (including 3 non-developers) or individually. On Discord you can create @developers and add only those seven, not bothering the other 3.
You can really go buckwild with that basic concept: only admin can tag @everyone, only @talkers can join a voice channel, only @projectmanagers can run some bot, only @collaborators can post to #project, @watchers can read #project but not post, while those that are neither @collaborators nor @watchers don't even see the channel... And in #otherproject you can have those same people in totally different groups and with different roles.
Way more customizable than by just having public/private channels and @everyone at your disposal, as Slack does.