Está mezclando la inclusión filtrada con el filtrado de entidades.
Incluido filtrado
.Include(m => m.Roles.Where(r => roles.Contains(r.Name)))
simplemente filtra los elementos de la colección relacionada (funciones de menú en este caso).
Para filtrar el conjunto de entidades (menús en este caso), debe reemplazarlo con el habitual Where
oparator, que para el filtrado deseado será
.Where(m => m.Roles.Any(r => roles.Contains(r.Name)))