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).