I think I'm right, and I think I can prove it. I just made a simple test case in Truespace: one sphere, textured in an arbitrary freespace texture and smoothed as a group, copied twice over and glued up as a three-subgroup object. I converted it to pof, and I get the following:
The original (base) sphere, viewed straight on in Modview, textures off. Normal enough (though you can tell the sphere is a little low-poly).

Secondly there is an identical copy of said sphere, glued as subobject 1. Identical in every way to the base sphere, and no visable difference here.

Third, and most importantly, a copy of the base sphere spun around 180 degrees in truespace. The viewing angle hasn't changed, but as you can see the normals are now FUBARed. As you can see, each face is lit as though it was on the other side of the sphere from where it actually is. On the first subobject, the same face
is on the opposite side of the sphere, and would be recieving that particular lighting if it were rendered. Thus, the subobject is inheriting the normals from the original model, rather than getting the correct ones assigned.

And I'll go ahead and upload the sample case too:
test.zipThe reason submodels look completely wrong (much worse than my sphere sample) when smoothed, as in aldo's example, is that adjacent faces in a subobject have a different set of corresponding vertices that more often than not do not correspond with vertices of adjacent polygons on the primary submodel. So when Modview or Freespace tries to average the normals, it doesn't work correctly and instead looks like you are connecting polygons that meet at a very sharp angle. Don't quite know how much that description makes sense, but hopefully Kazan can spot what's going wrong. First thing I would do is check the array that the normals are stored in; it looks like it either isn't getting reinitialized properly after a pass through a subobject, or the index isn't updating properly if the array is simply being appended to.