Cita: A slicing operation creates a view on the original array, which is just a way of accessing array data. Thus the original array is not copied in memory.
When modifying the view, the original array is modified as well:
This behavior can be surprising at first sight... but it allows to save both memory and time.
As a result, a matrix cannot be made symmetric in-place.
En C en concepto de x += 1; es igual a x = x + 1; pero en otros lenguajes no es cierto por ejemplo python o C++. Por la simple razón que existen sobrecarga de operadores.
Siguiendo con el problema:
Según lo que te dicen que a.T es una vista de a y no una copia. Y si a esto le añades que += hace la suma in-place (osea sobre el arreglo original a) entonces obviamente vas a tener problemas.
Con valores pequeños no tendrás problemas (matrices de 3x3 incluso de 20x20) pero con matrices grandes si tendrás problemas.