My suggestion would be as follows: First of all the association between task and user should be a many to many association. That would make it possible to have multiple tasks as a user and to have multiple users coupled to a specific task.
There are two simple ways to couple multiple users to a task (manually and via a microflow). - Via microflow You could select a userrole and pass that userrole to a microflow. In that microflow you could retrieve all users that have that user role over the association 'UserRoles'. Then you could change the task and add these users to the association between user and task. - Manually Use a reference set selector for the association between user and task (or input reference set selector) to allow for coupling mulitple users to a specific task.
I think that the microflow option would be the preferred option in most cases. Let me know if these options are helpful :-)
First, some general advice about application design. You should use system roles to control access to application functionality, rather than trying to use it to map your organization structure or working practices.
For example, you might have a set of field engineers that install phone systems, but have different geographic regions. You do not want to set up separate system roles for each region - they need the same functionality so should be members of the same roles. You need another entity to link both them and their tasks to the correct region. Otherwise you will end up with many near identical system roles groups that will become more difficult to manage.
In your case, I would set up a user team object, and link your users to the appropriate teams to reflect your organizational structure or working groups. Tasks can be assigned to Teams (an association between task and team assigned to). Individual members can be assigned to a task (an association between user account and task, constrained by the teams they are a member of).
With this sort of structure you can use x-path queries on data grids or template grids or microflow source to list all tasks assigned to a team that the current user is a member of. In a microflow source you can retrieve all tasks assigned to the current user, or assigned to the user's team that have no other assignee, and further restrict with elements like task status, etc.