This bugbehavior of bindings on arrays is the source of longstanding complaints. It must be very difficult to solve, as it has not been solved and doesn't look like it will be solved.
The most common work-around is to bind the whole array and programmatically generate all of the array elements. Consider the approaches in this topic for optimizing, too: