Porque es imposible
El registro tiene múltiples nodos raíz, pero sólo dos interesantes: LocalMachine y CurrentUser . Normalmente, la configuración escribe valores en LocalMachine, y el programa en ejecución SOLO escribe en CurrentUser (en realidad, a menos que la configuración interfiera con los permisos, el programa en ejecución no puede escribir en LocalMachine).
Si bien mantener las sobras en LocalMachine es pereza, como se señala en las otras respuestas, no es posible limpiar la parte del Usuario.
Si se instala un programa por máquina (cuáles son la mayoría) y varios usuarios lo usan, ¿qué debe hacer el desinstalador? Podría eliminar de forma segura la configuración de usuario de la cuenta actual, pero la cuenta actual podría no ser su cuenta. (Esto sucede si inició el desinstalador desde una cuenta que no es de administrador y luego ingresó las credenciales de una cuenta de administrador; la configuración ahora se ejecuta en esa cuenta, no en la primera).
¿Qué pasa con los otros usuarios? Podría intentar enumerar a todos los usuarios, pero sus claves de registro podrían no estar cargadas. (Windows es perezoso y solo carga las cosas que necesita).
Pero ni siquiera deberías probarlo. Si utiliza perfiles móviles, por ejemplo, para servicios de terminal, y luego elimina todas las configuraciones en la desinstalación, realmente podría estropear y eliminar cosas que realmente todavía están en uso.
Un servidor de terminal es básicamente una máquina de Windows donde múltiples usuarios inician sesión al mismo tiempo y usan aplicaciones.
Digamos que tiene dos servidores de terminal que ejecutan una aplicación. Desinstala la aplicación en TS1, ahora todas las configuraciones para todos los usuarios han desaparecido en TS2 porque tienes perfiles móviles. ¡Uy!
Lo mismo también se aplica a los archivos en los directorios por usuario.
En la configuración del programa de mi empresa, elimino las cosas por máquina, pero no toco las cosas por usuario, ni siquiera del usuario que actualmente ejecuta la configuración.