В буте ты только регистрируешь скоуп, там никаких манипуляций не происходит. Происходят они только при запросе в базу, а в этом случае модель уже является instance'ом.
Весь код сюда не влезет, но вкратце - используй отдельные классы global scope'ов.
https://laravel.com/docs/5.3/eloquent#global-scopes
/* PSEUDO CODE */
class RoleScope
apply blablabla
class MyModel
boot addGlobalScope new RoleScope
Не знаю почему, но Laravel передает instance модели только в классы, а в анонимные нет. Там дальше разберешься)
А вообще - используй Bouncer для ролей и пермишенсов. Мало того, что он использует встроенные возможности ларавель в виде гейтов, так еще и поддерживает морф сущностей и еще дофига всяких плюшек. Законно называю его лучшим представителем в своем роде и рекомендую к использованию!)