Você pode realmente usar menos - tente isto:
grep --color=always foo * | less -r
Isso dirá ao grep para ignorar que sua saída está sendo canalizada, e o "-r" em less diz para ele passar pelos caracteres brutos de controle, que neste caso são os códigos de cor.