Hello,
do you want to assign a user e.g. the "SiteReader" and "SiteEdtor" roles at the same time? I don't see how this would be of benefit, since the user would just be a SiteEditor for the whole site. Apart from SiteContributor and SiteEditor, no role within a site is a practical complement to another. They are mostly a natural progression from least-privileged to most-privileged..
What we have implemented for a customer is a solution where users can define business-related groups - such as "Management" and "Backoffice" - and assign any user to multiple groups. We have not modified anything on the repository side (SiteService) as membership is still defined by the global, technical roles. Our new Share components just call the basic group management web scripts and create the business groups using the common site group name pattern. The manage permissions dialog in the document library has been adapted to enable permission management for the new groups as well as the technical roles.
As I have seen various complications that originate from changes to a central component as the SiteService, I'd advise against it if there is another way. Our approach for example has the benefit that we can use the business group solution for specific sites while sites that do not need that just continue using the standard - an override to the SiteService always affects ALL sites.