Hi Andy,
Those helper methods on WebUser always return true for Admins because there should be nothing that Admins cannot do, so no matter what roles are used to check permissions the admin always has permission.
Sounds like you are trying to use roles more like groups, so if you don't like logic of the WebUser helper class which is really designed for permission checks using roles not for group membership checks, you can always use the standard Context.User.IsInRole("rolename") to check specific role membership.
WebUser.IsInRoles does not take an array of strings, you have extra quotes there, it would use a single string with role names separated by semi colons and quotes only on either end of the string.
WebUser class is a helper for checking permissions of the current user against their role cookie, it does not access the db, so it is very efficient.
SiteUser.IsInRole is more expensive because it hits the db to check the user roles, but it can be used to check roles of a user who is not the currently logged in user.
Hope it helps,
Joe