OPで説明されているように配列を追跡する場合、配列参照を追跡しており、配列内の個々のオブジェクトへの変更を追跡していないと考えています。
別の処理方法として trackedObject を使用する方法があります。これは Discourse のいくつかの場所で使用しています。
trackedObject