Bem, vou assumir que estamos a falar de tecnologia Microsoft.
Em primeiro lugar, para um web service vais necessitar de um web server que o sirva, que não tem que ser necessariamente o IIS (existe por exemplo o UltiDev Cassini que funciona bastante bem), e até pode ser construído um na aplicação.
A grande vantagem dos Web Services é que, a aplicação cliente que invocar, é independente de uma plataforma específica, ou seja, não precisa de saber que linguagem ou plataforma é utilizada para o desenvolvimento do Web Service. Apenas necessita saber como comunicar para receber e enviar mensagens (tipicamente SOAP/XML ou JSON agora com a proliferação de AJAX), permitindo que um site em php ou java façam um pedido a um Web Service desenvolvido em ASP.Net.
No entanto tem a desvantagem de ser dependente de um pedido HTTP para iniciar uma tarefa, uma vez que a aplicação ASP.NET só responde a pedidos HTTP, obrigando à chamada através de um processo externo ou por parte de um utilizador.
Por outro lado, o Windows Service estará instalado no servidor (máquina), e permite que assim que arranque o Windows, seja executado código, permitindo que mesmo que o servidor reinicie, a aplicação inicie por ela própria.
Pode ser no entanto, e dependendo da arquitectura da aplicação, utilizados os dois em conjunto, por exemplo, usando o Windows Service que terá apenas código para em determinados intervalos de tempo invocar num determinado URL o Web Service, deixando para este a tarefa de sincronização.
O anterior exemplo é válido apenas num cenário em que seja necessário executar a sincronização no contexto da aplicação ASP.Net, pois caso contrário, o próprio Windows Service poderá (deverá) espoletar as tarefas para sincronizar as bases de dados.
Resta-me dizer que muitos dos processos executados em background no Windows, são Windows Services.
Espero ter ajudado.