Ouvi lendas que variam de "deve ser opcional, pois alguns pequenos compiladores devem ser compatíveis com C11 sem VLAs" a "foi um erro em primeiro lugar". Eu nunca tive uma resposta verdadeira e definitiva para isso, no entanto. Por fim, não acredito que alguém realmente tenha um como o motivo (supondo - e esperando - que exista um) nunca ter sido divulgado (tanto quanto minhas antigas pesquisas).
Do capítulo 4 (página 13) da justificativa para o padrão internacional - linguagens de programação - C 5.10 (2003)
Ao definir implementações em conformidade em termos dos programas que eles aceitam, o Padrão deixa aberta a porta para uma ampla classe de extensões como parte de uma implementação em conformidade. Ao definir implementações independentes e hospedadas em conformidade, o Padrão reconhece o uso de C para escrever programas como sistemas operacionais e aplicativos baseados em ROM, bem como aplicativos hospedados mais convencionais. Além desse esquema de dois níveis, nenhum subconjunto adicional é definido para C, uma vez que o Comitê C89 sentiu fortemente que níveis demais diluem a eficácia de um padrão .
Ênfase minha. Observe que esta decisão é contrária à própria lógica. No entanto, outra coisa se tornou opcional. Agora você recebe __STDC_NO_VLA__
suporte ou VLA. É uma decisão muito estranha.