Creo que cuando rastreas un array como se describe en OP, estás rastreando la referencia del array y no los cambios en los objetos individuales dentro del array.
Otra forma de manejarlo es usando trackedObject, lo usamos en varios lugares en Discourse.