A devolução do IQueryable oferecerá mais flexibilidade aos consumidores do repositório. Coloca a responsabilidade de restringir os resultados ao cliente, o que naturalmente pode ser um benefício e uma muleta.
No lado bom, você não precisará criar toneladas de métodos de repositório (pelo menos nesta camada) - GetAllActiveItems, GetAllNonActiveItems, etc - para obter os dados desejados. Dependendo da sua preferência, isso pode ser bom ou ruim. Você irá (/ deve) precisar definir contratos comportamentais aos quais suas implementações aderem, mas aonde isso vai depender de você.
Assim, você poderia colocar a lógica de recuperação do lado de fora do repositório e deixá-lo ser usado, da maneira que o usuário desejar. Portanto, expor o IQueryable oferece mais flexibilidade e permite uma consulta eficiente, em oposição à filtragem na memória, etc., e poderia reduzir a necessidade de fazer uma tonelada de métodos de busca de dados específicos.
Por outro lado, agora você deu aos seus usuários uma espingarda. Eles podem fazer coisas que você pode não ter pretendido (uso excessivo de .include (), fazer pesadas consultas e fazer filtragem na memória em suas respectivas implementações, etc), o que basicamente ajudaria as camadas. e controles comportamentais, porque você deu acesso total.
Então, dependendo da equipe, da experiência deles, do tamanho do aplicativo, da disposição geral e da arquitetura ... isso depende: - \