You're completely right, but I think it's worth clarifying that VLA notation in parameter lists, and actual VLAs are two completely different things. The example he showed doesn't actually use a VLA, it just looks like it does.
I don't see an obvious reason - that's all information that's available on compile-time, there should be no additional run-time cost - or what are you implying?