I just ran into this issue and found your question. I think what is happening is geom columns that are generic "geometry" types are forcing QGIS to guess and/or convert the edited geometry in these columns to multisurface - I still don't know why.
To get around this, I created a new column and forced it to be multipolygon type:
alter table schema.table_name
add geom_mult geometry (Multipolygon, 4326);
Then populate my old geom column of 'mixed' geometries into this new column using ST_Multi(geom) to convert them:
update
dpsdata."Board_Districts_Scenarios"
set geom_mult = ST_Multi(geom);
From there, I went back into QGIS and added the new table_name.geom_mult to my project. I went through the exact same editing scenarios that were causing the conversion to multisurface, and it is not converting them anymore - the polygons are all staying multipolygon - this includes topological editing using 'reshape surface' tasks and creating new singlepart polygons (qgis/postgis is storing them automatically as multipart).
So now I'm going to drop my old geom column, create a new one of multipolygon type, and re-add my converted multipolygons to this new column using an UPDATE. All my applications that expect a column called geom work just fine. I can change my QGIS layer definition to use MultiPolygon instead of Polygon (or MultiSurface depending on how QGIS read it when you added the layer).
Also I'm doing all this using multipolygon instead of just polygon as I do indeed have multipolygon data in my table, in addition to singlepart polygons. No one (QGIS, PostGIS) seems to care if singlepart polygons are stored as multipart features that I can tell.