Ok, i've found the following article that i think explains what's going on:
http://msdn.microsoft.com/en-us/library/ms345137(SQL.90).aspxThe relevant paragraph reads:
"Note that if there are nested XML documents with no default namespace included in the result, a slight performance penalty has to be paid to make sure that they preserve their absence of a default namespace."
What I'm doing is trying to get SQL Server to ignore the fact that I'm inserting some xml without a default namespace, into xml with a default namespace, wanting my child to inherit the default namespace of the parent. I think it's too smart for this and knows that the insertion will change the default namespace of the child, unless it explicitly sets xmlns="" for the child xml.
This suggests that I'd have to add the default namespace in every level of my xml, which I really don't want to do. Maybe another way to look at it is "can I add a default namespace to the root of an existing document", so i can create the document without a default namespace, and then add it to the root afterwards. I've not yet succeeded in doing this... i run into the same problem where it wants to "correct" the default namespace for everything under the node you add the explicit default namespace to.
Eric