A matrix has a dynamic number of columns. That is its whole purpose. If you want a fixed number of columns, use a table.
That said, I have experienced similar issues with various SSRS controls, not just matrix. It seems that even when they do not overlap at design time, they may do so at runtime. That causes elements in close proximity to shift. Try moving your matrix farther
down leaving a large gap between it and the nearest control. If the shifting stops, move the matrix closer until it is as close as possible without shifting other controls.
"You will find a fortune, though it will not be the one you seek." -
Blind Seer, O Brother Where Art Thou
Please Mark posts as answers or helpful so that others may find the fortune they seek.