You can export point, line, and polygon layers into separate files and combine them with ogr2ogr.
Test data
points.mif
Version 300
Charset "Neutral"
Delimiter ","
Columns 2
R_G_B Char(254)
COLOR Char(254)
Data
Point -90.5566923029394 14.5906248310583
Symbol (35,0,12)
Point -90.5515144114431 14.6013641615691
Symbol (35,0,12)
Point -90.5407750809323 14.5938849849634
Symbol (35,0,12)
lines.mif
Version 300
Charset "Neutral"
Delimiter ","
Columns 2
R_G_B Char(254)
COLOR Char(254)
Data
Line -90.5439393479578 14.6041448810763 -90.5314740536149 14.6133500215141
Pen (1,2,9288960)
Line -90.5536239227934 14.6182402523717 -90.5630208369904 14.6045284285946
Pen (1,2,9288960)
Line -90.557651171735 14.5991587633392 -90.5396244383776 14.5850633920438
Pen (1,2,9288960)
polygons.mif
Version 300
Charset "Neutral"
Delimiter ","
Columns 2
R_G_B Char(254)
COLOR Char(254)
Data
Region 1
4
-90.5361725107134 14.6028024647625
-90.5243784245275 14.6012682746895
-90.5358848500747 14.5908166048174
-90.5361725107134 14.6028024647625
Pen (1,2,0)
Brush (2,255)
Region 1
4
-90.5701164660778 14.5969533651093
-90.5593771355671 14.5942685324816
-90.5737601675012 14.5838168626095
-90.5701164660778 14.5969533651093
Pen (1,2,0)
Brush (2,255)
Region 1
4
-90.5453776511512 14.6222675013133
-90.533200017447 14.6205415374812
-90.5498843344906 14.6101857544886
-90.5453776511512 14.6222675013133
Pen (1,2,0)
Brush (2,255)
ogr2ogr commands for combining points, lines, and polygons into layer "collect"
ogr2ogr -f "MapInfo File" collect.tab points.mif -nln collect
ogr2ogr -f "MapInfo File" -update -append collect.tab lines.mif -nln collect
ogr2ogr -f "MapInfo File" -update -append collect.tab polygons.mif -nln collect
ogrinfo that confirms that all features with individual styles are now on the same layer
ogrinfo collect.tab -al
INFO: Open of `collect.tab'
using driver `MapInfo File' successful.
Layer name: collect
Geometry: Unknown (any)
Feature Count: 9
Extent: (-90.570000, 14.580000) - (-90.510000, 14.620000)
Layer SRS WKT:
ENGCRS["Nonearth",
EDATUM[""],
CS[Cartesian,2],
AXIS["(E)",east,
ORDER[1],
LENGTHUNIT["Meter",1]],
AXIS["(N)",north,
ORDER[2],
LENGTHUNIT["Meter",1]]]
Data axis to CRS axis mapping: 1,2
R_G_B: String (254.0)
COLOR: String (254.0)
OGRFeature(collect):1
R_G_B (String) = FF0000
COLOR (String) = 1
Style = SYMBOL(a:0,c:#000000,s:12pt,id:"mapinfo-sym-35,ogr-sym-9")
POINT (-90.57 14.6)
OGRFeature(collect):2
R_G_B (String) = FF0000
COLOR (String) = 1
Style = SYMBOL(a:0,c:#000000,s:12pt,id:"mapinfo-sym-35,ogr-sym-9")
POINT (-90.54 14.6)
OGRFeature(collect):3
R_G_B (String) = FF0000
COLOR (String) = 1
Style = SYMBOL(a:0,c:#000000,s:12pt,id:"mapinfo-sym-35,ogr-sym-9")
POINT (-90.54 14.6)
OGRFeature(collect):4
R_G_B (String) = 8DBD00
COLOR (String) = 62
Style = PEN(w:1px,c:#8dbd00,id:"mapinfo-pen-2,ogr-pen-0",cap:r,j:r)
LINESTRING (-90.54 14.61,-90.54 14.61)
OGRFeature(collect):5
R_G_B (String) = 8DBD00
COLOR (String) = 62
Style = PEN(w:1px,c:#8dbd00,id:"mapinfo-pen-2,ogr-pen-0",cap:r,j:r)
LINESTRING (-90.54 14.62,-90.57 14.61)
OGRFeature(collect):6
R_G_B (String) = 8DBD00
COLOR (String) = 62
Style = PEN(w:1px,c:#8dbd00,id:"mapinfo-pen-2,ogr-pen-0",cap:r,j:r)
LINESTRING (-90.57 14.6,-90.54 14.58)
OGRFeature(collect):7
R_G_B (String) = 0000FF
COLOR (String) = 5
Style = BRUSH(fc:#0000ff,id:"mapinfo-brush-2,ogr-brush-0");PEN(w:1px,c:#000000,id:"mapinfo-pen-2,ogr-pen-0",cap:r,j:r)
POLYGON ((-90.54 14.61,-90.51 14.6,-90.54 14.6,-90.54 14.61))
OGRFeature(collect):8
R_G_B (String) = 0000FF
COLOR (String) = 5
Style = BRUSH(fc:#0000ff,id:"mapinfo-brush-2,ogr-brush-0");PEN(w:1px,c:#000000,id:"mapinfo-pen-2,ogr-pen-0",cap:r,j:r)
POLYGON ((-90.57 14.6,-90.57 14.6,-90.57 14.58,-90.57 14.6))
OGRFeature(collect):9
R_G_B (String) = 0000FF
COLOR (String) = 5
Style = BRUSH(fc:#0000ff,id:"mapinfo-brush-2,ogr-brush-0");PEN(w:1px,c:#000000,id:"mapinfo-pen-2,ogr-pen-0",cap:r,j:r)
POLYGON ((-90.54 14.62,-90.54 14.62,-90.54 14.61,-90.54 14.62))