Thanks for making this module, it's exactly what I needed!
I had an issue where custom roles which were allowed to view menu items did not have the menu item appear correctly. I had some custom roles with various menu options, but only the admin users would see the menu.
I traced this to the use of array_keys in the code, which seems to return a sequence (0,1,2...) every time when returning roles assigned to the user. Thus, as long as the assigned role was low enough, it would appear to work (role ID 1 is authenticated user, so this would always work if a menu item is given to this role as long as the user had one additional role, role ID 2 is a custom role, but would also always work if the user was assigned at least 2 additional roles, etc).
I fixed this by updating the function to use array_values instead, which returns the actual role ID's assigned to the user and not the array number.