Add user1 to group Reviewers. user1 implicitly has the Reviewer role, but looking at acl_users he doesn't have that role explicitly. If you remove user1 from group Reviewers at this point, user1 will no longer have the Reviewer role.
Let's say instead you go to @@usergroup-userprefs and hit Save. user1 now has the Reviewer role explicitly, and you can see this in acl_users. If you remove user1 from the Reviewers group, it doesn't matter - he still has the Reviewer role. You will need to also uncheck that role from the user in the users overview page.
This seems like a bug yes? If the "inherit" icon is present on a role when I hit save, that role should not be explicitly assigned.
You could also change the condition to "python:inherit and explicit". That would make it so that if you explicitly set a Role before adding a user to a group that also has that Role, when they are removed from that group they will still have their explicit assignment of that Role. I think there's an argument that we should not do this though, because there is no way to convey to an admin that they also explicitly have that role, nor can they change it without removing the group.