This is positional_alignment (P07) with higher stakes: a query's wrong rows vanish on the next run, but an INSERT's wrong rows persist — discovered weeks later, mixed with correct rows, needing forensic cleanup. SELECT * feeding an INSERT is the same bug on a timer: it works until someone reorders or adds a column in either table's DDL.
INSERT INTO archive SELECT * FROM intake; SELECT item, room FROM archive;
INSERT INTO archive (item, room) SELECT item, room FROM intake; SELECT item, room FROM archive;
The nightly load committed 'west' into the item column — INSERT ... SELECT * mapped intake's columns into archive by position, and the room name is now stored as an item, permanently.
Explicit column lists, both sides, always — INSERT INTO t (a, b) SELECT x, y; no SELECT * into INSERTs.