The brackets are for referring to a variable within an object by using a dynamic text string.
What "game["Tile"+map[i][j]]" ends up being is "game["Tile"+1]" which Flash will interpret as a variable or object named "game.Tile1". Which in this case created a new tile based on that prototype Tile1(), so the code will be executed as...
Actionscript Code:
game[name] = new game.Tile1();
I'm not completely familiar with how prototypes work in AS2, but I believe it's the equivalent to a "class", a bit of code you can execute anywhere or create multiple instances of.
Another example for when you might use the brackets, say you have a bunch of enemies or bullets. You may loop through all of them on an enterframe to make them move. They're named "enemy1, enemy2, enemy3, etc." You might make a loop like this.
Actionscript Code:
var enemyTotal = 10;
for (var i = 0; i < enemyTotal; i++) {
trace("moving enemy" + (i + 1) );
this["enemy" + (i + 1)].move();
}
Hope that clears your confusion!