Principalmente razones de seguridad.
Según tengo entendido, cuando un servicio de Windows crea controles GUI como un cuadro de mensaje, normalmente solo se vieron en la sesión que los servicios se ejecutan en la sesión 0, que también solía ser el primer usuario que inició sesión localmente o que alguien inició sesión usando mstsc / admin. Por lo tanto, este usuario vería estos controles y podría interactuar con el servicio.
Pero por razones de seguridad, la sesión 0 ahora está reservada y el primer usuario que inicie sesión recibirá una nueva sesión y, por lo tanto, no verá los controles de la GUI.
Dado que esto rompe muchos servicios, por compatibilidad, hay un proceso (vea este blog de MSDN) que intenta detectar si se está mostrando algún mensaje y aparece una advertencia 'Un programa que se ejecuta en esta computadora está tratando de mostrar un mensaje 'y le permite ver o ignorar el mensaje.
Microsoft tiene un WhitePaper sobre este tema que puede descargar desde aquí
También sospecharía que otra razón menor es porque la característica fue mal utilizada / mal interpretada y condujo a malos diseños. Por ejemplo, solía tener un servidor antiguo con un servicio de terceros que mostraba algunas notificaciones / errores usando un cuadro de mensaje en lugar de escribir en el registro de eventos. Pero nunca inicié sesión localmente y rara vez inicié sesión en modo administrador y, por lo tanto, no vería los mensajes.