Los instaladores son el resultado de años de evolución y un poco de historia (simplificada) ayuda a entender por qué hacen lo que hacen.
El modelo de Windows 3.1 sugirió archivos de configuración de estilo config.ini por aplicación con bibliotecas compartidas compatibles que van a las carpetas del sistema para evitar la duplicación y el desperdicio de espacio en disco.
Windows 95 introdujo el registro que permite un almacén central para la configuración de la aplicación, reemplazando muchos archivos de configuración. Más importante aún, la configuración de Windows se almacenó en el mismo lugar.
El registro se hinchó debido a que las aplicaciones no se limpiaron después de sí mismas. El infierno de DLL ocurrió como resultado de múltiples versiones de las mismas bibliotecas compartidas que se sobrescribieron entre sí.
.NET introdujo el concepto de app.config (archivos casi ini marca 2, esta vez con un poco más de estructura, lo que ahorra a los desarrolladores la pérdida de tiempo escribiendo analizadores manuales). El GAC se introdujo en los ensamblados compartidos de versión en un intento por evitar el infierno de DLL.
En Windows XP y más en Vista, Microsoft intentó definir el espacio de usuario como un lugar para almacenar datos de usuario y archivos de configuración en una única ubicación estándar para permitir perfiles móviles y una fácil migración (solo copie su perfil) con las aplicaciones instaladas en Archivos de programa .
Entonces, supongo que la razón es que "las aplicaciones en Windows están diseñadas para vivir en un lugar, sus dependencias compartidas en otro y los datos específicos del usuario en otro", lo que prácticamente va en contra del concepto de copiar una sola ubicación.
.. y eso es antes de que tenga que configurar cuentas de usuario, y configurar y garantizar permisos de seguridad, y descargar actualizaciones e instalar servicios de Windows ...
xcopy es el "caso simple" y ciertamente no es la mejor opción para todo.