Um Repositório é um padrão de acesso a dados no qual os objetos de transferência de dados são passados para um objeto de repositório que gerencia as operações CRUD. Esse padrão é útil em situações em que o mecanismo de acesso a dados pode mudar significativamente - por exemplo, você espera ter armazenamentos de dados variados, como o Oracle em uma implementação e o SQL Server, ou mesmo o HADOOP em outra.
Uma Camada de Serviço é um padrão lógico de negócios que é comumente usado em arquiteturas SaaS. O uso de uma camada de serviço permite que uma ou mais implementações de apresentação acessem sua lógica de negócios por meio de uma interface comum. Por exemplo, se você quisesse que seu site tivesse uma API, usaria uma camada de serviço para implementar a funcionalidade de back-end comum que tanto o site quanto a API consumiriam.
O primeiro deve se preocupar principalmente com o acesso a dados e o segundo com a lógica de negócios.
Basicamente é para isolar em camadas diferentes as responsabilidades da aplicação :)