IEnumerable é uma interface, que descrevre apenas os comportamentos de quem a implementa.
List é uma implementação concreta.
Usando o IEnumerable você poupa o compilador de executar um trabalho desnecessário para determinados comportamentos (inclusive a geração de código SQL para consulta), ao passo que, quando precisar efetuar alguma operação, pode usar o IEnumerable.ToList().