Collecting multipolygons into a single multipolygon with ST_Collect() in PostGIS
How about using St_Union() instead?
CREATE TABLE new_table AS
SELECT
1::INT as id,
ST_Union(geom)::geometry(MultiPolygonZ,2193)
FROM
old_table
If this originates Topology problems (GEOSUnaryUnion: TopologyException) you can use ST_Collect() wrapped with a St_buffer() with 0 distance:
CREATE TABLE new_table AS
SELECT
1::INT as id,
ST_Buffer(ST_Collect(geom),0)::geometry(MultiPolygonZ,2193)
FROM
old_table