Скорее всего потому что вы так написали. Нет никаких проблем написать код так, чтоб оно не вылетало при закоментированном addChild(), но вылетало если он написан.
Смотрите, у вас есть там 3 строки, где возможен вылет по неправильному индексу:

Код AS3:
object=Game.screen.soMap.dynamics[i];

Код AS3:
object=Game.screen.soMap.monsters[i];

Код AS3:
object=Game.screen.soMap.npcs[i];
Судя по тому, что вы упоминаете object.sdCreateQuestEffect(); то в первой. Но возможно и нет - забросайте всё трейсами и найдите точно, где и кто. Или дебаггер подцепите. Ну как всегда в общем. Похоже, кто-то у вас пересоздает Game.screen.soMap.dynamics. Т.к. он доступен глобально, то это может быть кто угодно. Возможно, что это конструктор ScreenQuestEffect, куда передается Game.screen.soMap.