One important that is missing in all comments is the fact that you can assign roles to individual users as well, and not just to groups.
Here is a use case:
A university Physics professor has "Grade Test" role (aka right or privilege) for a particular course or set of courses. However, he decides to go on sabbatical for year and wants another instructor (or perhaps, several instructors - a group), i.e. his replacement(s), to have the same role(s) (privileges) over the same set of courses. Note that the substituting instructors may belong to different user groups. The administrator can easily assign the role(s) in question to individual users or groups of users.
Of course, after the tenured professor returns, the administrator can revoke those roles (privileges).
From a system perspective we only care which methods a user (or a group of users) is allowed to execute. Before executing restricted method we check user roles by calling other methods that normally return Boolean values.