My tests seem to confirm that
INSERT INTO a (x, y) SELECT y, x FROM b
maps b.y to a.x, i.e., the fields are matched o
b.y
a.x
That is correct, SQL Server does not try to do any mapping of column names since you can apply any aliases to the source data that you like. It will always reference ordinal position.