Principalmente razões de segurança.
Pelo que entendi, quando um serviço do Windows cria controles de GUI, como um MessageBox, eles normalmente eram vistos apenas na sessão em que os serviços são executados, ou seja, na Sessão 0, que também costumava ser o primeiro usuário conectado localmente ou por alguém fazendo logon usando mstsc / admin. Portanto, esse usuário veria esses controles e poderia interagir com o serviço.
Mas, por razões de segurança, a Sessão 0 agora está reservada e o primeiro usuário a fazer logon receberá uma nova sessão e, portanto, não verá os controles da GUI.
Como isso interrompe muitos serviços, para compatibilidade, existe um processo (consulte este blog do MSDN) que tenta detectar se alguma mensagem está sendo exibida e aparece com um aviso 'Um programa em execução neste computador está tentando exibir uma mensagem 'e permite visualizar ou ignorar a mensagem.
A Microsoft possui um WhitePaper sobre esse assunto, que pode ser baixado aqui
Eu também suspeitaria que outro motivo menor é porque o recurso foi mal utilizado / mal interpretado e levou a projetos ruins. Por exemplo, eu costumava ter um servidor antigo com um serviço de terceiros que exibia algumas notificações / erros usando uma caixa de mensagem em vez de gravar no log de eventos. Mas nunca efetuei logon localmente e raramente efetuei logon no modo de administrador e, portanto, não veria as mensagens.
Serviços interativos costumavam ser possíveis , mas o modelo de serviço é o de um processo executado independentemente de qualquer usuário. Eles são projetados para serem executados sem supervisão e, portanto, não precisam de uma GUI.
Os serviços interativos não estão disponíveis desde o Windows Vista, portanto, não devem mais ser usados.
Se você precisar interagir com o serviço, a página à qual vinculei recomenda a criação de um aplicativo GUI separado que se comunique com o serviço através de algum tipo de comunicação entre processos (IPC) - por exemplo, pipes nomeados.
fonte
Porque os serviços devem ser executados em segundo plano sem interagir com o usuário; na verdade, eles podem ser executados enquanto nenhum usuário estiver conectado.
fonte
Sim, era possível e funcionou. Quando você efetuou login, obteve a interface do aplicativo. Foi muito útil para aplicativos mais antigos que não têm um serviço disponível, mas ainda precisam ser executados no servidor. Embora não fosse a solução mais estável. Tornou-se executado como o usuário que poderia clicar nele ou sair. Isso não foi muito legal.
Agora, todos desenvolvem serviços nativos e adicionam um aplicativo ou log para gerenciar o serviço. Esse é um bom padrão de design e agora está sendo usado na maioria das vezes.
Então, veja isso como um legado que era possível.
fonte
Os serviços destinam-se a operações não atendidas, principalmente em segundo plano. O serviço de nome em si significa atuar como um servidor para alguns aplicativos clientes ou outros serviços que consomem esse serviço. Portanto, a Microsoft pode querer agora seguir o básico e fazer uma distinção clara entre serviços e aplicativos. Enquanto o cortador de unhas existe, por que escolher faca de cozinha para cortar nada?
fonte