Statically verifying stack sizes is a hard problem, and I've never heard of a programming language that does it (Ada might?).
In any case, it wouldn't obviate the need for bounds checking. It's possible to index into an array given information known only at runtime, which means that the check for whether that index is valid needs to happen at runtime.