In the example below, matrix m is stored as symbolic expression. When applying the element assignment to m[2,2 SMath doesn't care about that m could evaluate to a matrix and stores the content of m as the first element of a new matrix.
The user was sure to assign to a matrix, as m displayed as such. He could have seen the difference from the dynamic assistent but how could he guess that the expression would not be treated like a matrix.
Besides this, it is another case where a visible clue as to the optimization would be essential (SS-19)
The generic solution would be to evaluate the assignment target first, in order to determine it's actual type, just like recently done with index expressions.
On the other hand, this might be a bug in the pre-evaluation type detection logic. Any expression of type augment() must be a matrix.