@bkemper: I understand that it can be annoying. But I've not run into a situation yet where it can't be worked around fairly easily. Using padding versus margins, using floats, giving parent elements position:relative and/or zoom:1, etc. -- even your own suggestion about inserting a dummy element -- something always seems to work.
Maybe insert the css3-container into the original element, instead of before it.
Making it a child has serious problems, such as clipping of border and box-shadow if the element has overflow:hidden, etc. Making it the previous-sibling is by far the most reliable solution out of all of them I've tried.
Or also insert an invisible 'height:0; overflow:hidden" element that has the top margin but isn't positioned.
It's an interesting idea but I'm doubtful it could be done automatically in a reliable way. Inserting an element might work around this hasLayout bug in some cases, but would likely cause other problems in other cases. The problem is that it's probably impossible to detect which situations warrant it and which don't.
That said, I might consider allowing a custom CSS property (e.g. -pie-add-prev-sibling:true) that an author could include manually to instruct PIE to insert such an element. I'll give that some more thought. In the meantime, you can certainly add such an element yourself.
When the original element has a left border but no padding, and the child has no left margin, it gets moved over to the left from the original border disappearing. Shouldn't you be adding padding or somethign to compensate for the border you are removing?
PIE doesn't remove the border. It simply hides it by setting border-color:transparent in IE7-8, and a trick with a nested element in IE6. So I think you're mis-diagnosing the issue. If you could post a code snippet which demonstrates what you're seeing that would be helpful so I can see what's actually going on.