I had a try and I did not need to do anything special, despite to disable the name laundering that by default changes the dash character into underscore. See https://gdal.org/drivers/vector/pg.html
LAUNDER=[YES/NO]: Defaults to YES. This may be "YES" to force new fields created on this layer to have their field names "laundered"
into a form more compatible with PostgreSQL. This converts to lower
case and converts some special characters like "-" and "#" to "_". If
"NO" exact names are preserved. If enabled the table (layer) name will
also be laundered.
I run ogr2ogr with these parameters
-lco column_types=plus-type=text -lco launder=no
The column "plus-type" was integer in the source data and ogrinfo shows now about the new PostGIS table that the column type is changed into text.
FID Column = ogc_fid
Geometry Column = wkb_geometry
plus-type: String (0.0)
OGRFeature(lcotest):1
plus-type (String) = 3
POINT (309 269)