BCB4 compiler confused or am I?

I'm making a simple Automation server dll, an object in which wraps a VCL
dialog form.
So the xxImpl class has a member which is a pointer to the form (m_dlg).

If I create the form in a function declared in the header for the xxImpl
class, I get a crash when the form is used. The reason why is that in the
function in the header, the pointer to the form is placed at offset 0x58
from the 'this' pointer. When the m_dlg pointer is used in the cpp file, the
compiler uses an offset of 0x58.

If I use FinalConstruct defined in the cpp file everything works.

To summarize:

in xxImpl.h

   m_dlg = new TForm1(NULL);     //   this->0x58

in xxImpl.cpp

   m_dlg = new TForm1(NULL);     //   this->0x60

What could be causing this disparity? I can change the packing and the
offsets change but still don't agree.