The cldc hotspot has only 4 bytes overhead for the object header. I am sure Sun could make a jvm with similarly small object headers.
Object headers on hotspot aren't that much bigger.
The big issue generally isnt obejct headers but reflection information. In order to give you debugger like functionality at run time (readable stack traces, dynamic resolution of methods by symbolicname, etc) we basically have to carry what would be debugging info in other systems into the runtime.
This is why obfuscators that minimize the lengths of those strings can be a win, though you give up most of the usefulness of reflection and run-time stack traces as a result.