ほとんど個人的意見ですが、少し突っ込んだ考察です。 まずそもそも、どうして変数は宣言しなくても使えるかというと、新しい名前が出てきたらプチコンが気を利かせて「お、新しい変数だな?」と判断することができるからです。 配列でも「新しい」事は変数と同じように判断できますが、配列はそれに加えて「サイズがいくつの配列なのか」という情報が必ずいります。 暗黙のルールを作るなら「0個」が一番自然ですが、それだと BOX[0]=1 など、どのように書いてもエラーになるので意味がありません。 前作ではこれを、「10個」という暗黙のルールを作っていたから、宣言しなくても使えたようですね。