I think the polymorphic 'benefit' is that you don't have to write extra code to figure out if you are dealing with a manager user or an employ user -- which you need to differentiate because the roles have different properties.
but what's weird for me is, from the code you posted, I don't see how this code helps you differentiating admin, or managers versus employee users.
so, this goes back to your original posting.
3 roles, and a user. where a user has a role. and the roles contain the fields that describe each of the role types.
then your permissions become simpler.
e.g. You could have a fire method on a Controller say.
and then you want to authorize fire.
you would just do something like
$this->authorize('fire', $role) //I think you'd have to use an update or delete method not 100% sure.
then in the corresponding Policy class (art make:policy ManageEmployees (say)), just look at the users role to figure out if they have rights to fire somebody. i.e. if your not an manager you can't, or if your not admin and the employee you're trying to fire is an manager. ...
just a thought.