Because detecting that requires code flow analysis.
Note that it is completely different from CTFE.

Kenji Hara

2012/12/13 Pacoup <etiennelg@gmail.com>
On Thursday, 13 December 2012 at 04:26:52 UTC, Mehrdad wrote:

It's C++ philosophy imposed on the C#-like aspects of the language.

That's not a rationale for not having bounds checking on dynamic arrays at compile time. How is this making the language better? Is there a technical limitation which explains this?