I had a similar problem, trying to inherit an Organization Role, through every registered Portal User. After lots of testing I realized that only Regular Roles would get propagated, and behave as expected with PermissionChecker and RoleLocalServiceUtil.
If you try to create a Regular Role, instead of a Site Role, you can assign that role to a User, A UserGroup, an Organization or a Site
I still haven't find a complete documentation on the difference between Regular, Organization and Site Roles, but I'm getting the impression that e.g a Site role is not a Role you'll assign to all the users of a Site
Update: I opened the source for liferay 6.1.0 and noticed on the the docs of
RoleLocalServiceUtil.hasUserRole
/**
* Returns <code>true</code> if the user is associated with the named
* regular role.
*
* @param userId the primary key of the user
* @param companyId the primary key of the company
* @param name the name of the role
* @param inherited whether to include the user's inherited roles in the
search
* @return <code>true</code> if the user is associated with the regular
role; <code>false</code> otherwise
* @throws PortalException if a role with the name could not be found in the
company or if a default user for the company could not be found
* @throws SystemException if a system exception occurred
*/
public static boolean hasUserRole(long userId, long companyId,
java.lang.String name, boolean inherited)
throws com.liferay.portal.kernel.exception.PortalException,
com.liferay.portal.kernel.exception.SystemException {
return getService().hasUserRole(userId, companyId, name, inherited);
}
Notice the "regular role"
Now I don't have the time to check all the references back to this function, but for me it's a clear indication that the Role/Permission Checking mechanism of Liferay, MIGHT not be meant to work with any Role Type