Отдельная папка в Controllers для каждой роли?
Нормально ли для каждой роли делать отдельную папку в Controllers и почти дублировать все контроллеры, чуть их модифицируя?Нет. Если даже отбросить все прочие "но", представьте, чего Вам будет стоить ввести новую роль в систему?! Это же будет полный ахтунг!Также получается и роуты дублируются... и виды.Тем более.Есть просто мысль, что я много кода дублирую, нормально ли это?Нет, не нормально. Честно говоря, я не понимаю, как Вы смогли изучить Laravel, при этом обойдя вниманием один из основополагающих принципов разработки DRY.Для ролей и разрешений использую "laravel spatie permission".Честно говоря, не знаю что это, но если текущий модуль обслуживания прав/привилегий/ролей/управления доступом (и т.п.) - Вас чем-то не устраивает или заставляет(?) Вас нарушать основополагающие принципы разработки - нужно просто найти другой, более подходящий под Ваши конкретные задачи.
Я у себя так и сделал. Разложил вьюхи и контроллеры по разным директориям. 
Только у меня по факту 2 самостоятельных приложения, admin и user.
Т.е. не роли, а приложения разделил. Возможно не ваш случай.