You already saw my related answer addressing the reverse conversion timestamp → timestamptz without table rewrite:
Well, since Postgres 12 the same "easter egg" feature applies to timestamptz → timestamp as well. The release notes:
Allow ALTER TABLE ... SET DATA TYPE changing between timestamp and timestamptz to avoid a table rewrite when the session time zone is UTC (Noah Misch)
In the UTC time zone, these two data types are binary compatible.
So just:
SET timezone = 'UTC'; -- unless already set to UTC ALTER TABLE tbl ALTER COLUMN ts TYPE timestamp; RESET timezone; -- optional
And you don't have to mess with system catalogs directly (which should be avoided if at all possible).