According to author this list was reverse-engineered from H3. And since he is HotA programmer this is most likely true - list should match H3. How well that list was balanced is a separate question but it should be OK as base.
Actually we can link all of that to sub ID’s - apart from objects that need special handling (towns, heroes, mines, monoliths, etc) there are quite few objects that have sub ID’s. This is full list of objects that have sub ID’s:
artifact, boat, borderGuard, keymasterTent, cartographer, creatureBank, creatureGeneratorCommon, garrison, monolithOneWayEntrance, monolithOneWayExit, monolithTwoWay, mine, monster, resource, seerHut, town, borderGate, hero
In general I agree. But in some cases having per-map limit makes sense. For example obelisks - VCMI should handle 48+ obelisks but it makes no sense gameplay-wise. Probably we should implement per-map limit but use it only in few cases like this one.
And another property that RMG may need - object function (obstacle, treasure, guard, etc)