He escuchado que las leyendas varían de "debería ser opcional, ya que algunos compiladores pequeños deberían poder cumplir con C11 sin VLA" a "fue un error en primer lugar". Sin embargo, nunca obtuve una respuesta verdadera y definitiva a esto. En última instancia, no creo que nadie realmente tenga uno, ya que la razón (suponiendo, y esperando, que haya uno) nunca se reveló (en lo que respecta a mis búsquedas anteriores).
Del Capítulo 4 (página 13) de Justificación de la Norma Internacional - Lenguajes de programación - C 5.10 (2003)
Al definir implementaciones conformes en términos de los programas que aceptan, el Estándar deja abierta la puerta a una amplia clase de extensiones como parte de una implementación conforme. Al definir implementaciones independientes tanto alojadas como conformes, el Estándar reconoce el uso de C para escribir programas tales como sistemas operativos y aplicaciones basadas en ROM, así como aplicaciones alojadas más convencionales. Más allá de este esquema de dos niveles, no se define ningún subconjunto adicional para C, ya que el Comité C89 consideró firmemente que demasiados niveles diluyen la efectividad de un estándar .
El énfasis es mío. Tenga en cuenta que esta decisión va en contra de su propia lógica. Sin embargo, otra cosa hecha opcional. Ahora obtienes __STDC_NO_VLA__
o soporte VLA. Es una decisión muy extraña.