Vous mélangez les inclusions filtrées avec le filtrage des entités.
Inclure filtrée
.Include(m => m.Roles.Where(r => roles.Contains(r.Name)))
filtre simplement les éléments de la collection associée (rôles de menu dans ce cas).
Afin de filtrer l'ensemble d'entités (les menus dans ce cas), vous devez le remplacer par l'habituel Where
opérateur, qui pour le filtrage souhaité sera
.Where(m => m.Roles.Any(r => roles.Contains(r.Name)))