Los estándares USB no dicen nada específico sobre teclados o ratones, etc., en ninguna versión.
Es el estándar HID que lo hace. La estructura de informe de modificadores de 6 teclas más solo tenía la intención de facilitar la vida del BIOS (por lo que no tuvieron que analizar los descriptores de informe), pero se convirtió en un 'estándar' de facto para los teclados. Sin embargo, el estándar HID permite todo tipo de informes diferentes, y todos los principales sistemas operativos lo admiten por completo, por lo que no hay necesidad de controladores adicionales.
La otra limitación es que un paquete de datos USB de baja velocidad solo puede tener un máximo de 8 bytes. Un informe puede ser más grande, pero eso comienza a demorar mucho en enviarse. El estándar USB solo permite que un dispositivo de baja velocidad envíe un paquete cada 10 ms (por punto final). El sistema operativo generalmente empuja eso hasta 8 ms, es decir, 125Hz (sin hacks). ¡Tomar hasta 16 ms para presionar una tecla al host sería una mierda! Así que hemos tenido una fase en la que los fabricantes intentan sacar más provecho de los chips de baja velocidad de lo que realmente pueden manejar, con trucos como múltiples puntos finales, etc. :(
El USB de velocidad completa libera esas limitaciones. Cada paquete puede tener 64 bytes y puede enviarse cada 1 ms (de nuevo, por punto final). Esto permite que el estándar HID se use en su totalidad.
Finalmente, NKRO no se hace solo por el simple hecho de hacerlo. Hacer NKRO completo requiere solo un bit por clave, en lugar de un byte, y no tiene que tratar los modificadores como un caso especial. Por lo tanto, un teclado puede enviar, por ejemplo, 104 teclas en solo 13 bytes; utilizando el otro esquema, 13 bytes solo gestionarían 11KRO (11 teclas + modificadores + un byte reservado). Claro, todavía hay muchas claves, pero es un método mucho menos elegante (y todavía 'no-6KRO', por lo que aún podría ser incompatible con hosts tontos).