I assume that you’‘re creating the iq:register packet yourself? Can you paste in the code that you’‘re using to do so? I don’'t think you should be getting empty xmlns elements normally.
You are correct. When creating a new element using the DocumentHelper the namespace is assumed to be new (i.e. empty) so when adding the new element to the parent element it is assumed that the new element is under a different namespace. As you said, the correct way to add a new element under the parent’'s namespace is to send #addElement to the parent.