Thomas, another idea could be make use of some sort of hierarchical groups, so tasks will be assigned to top level groups let's say AccountingSupervisors which in turn will be composed on lower level groups like accounting and supervisors. Users will be assigned to lower level groups and you provide custom implementation of UserGroupCallback that will be responsible for collecting all top level groups for given user.
Maybe it something that could work for you?
HTH