Yes the second line is the haslayout fix for ie6 only.
The star selector hack is a rule that IE6 parses because it thinks that the html has a parent but html doesn't have a parent as we all know and the rule should fail (although it is a valid construct but it just matches nothing).
IE6 treats * html as though you had just said html and parses it without problem. It is a 100% safe hack as it passes values to only ie6 and under and no others browsers take note of it. (It's been the mainstay of us IE6 hackers for years
The height:1% is nothing more than a haslayout trigger as dimensions are haslayout triggers. It applies haslayout without affecting the element in any way because IE6 treats height as a minimum and will always expand an element if the content demands it. The overflow visible is a safety net in case you were using overflow:hidden to clear floats and then you would hide any content over 1% high (should the height be available from a parent with a height).
Instead of height:1% we could have used the proprietary zoom property to force haslayout instead but zoom does not validate although it is safe to use.
Finally, why does the first bug occur? I've been reading up on the IE box model bug, but that doesn't seem to account for it: apart from anything else, my doctype is XHTML strict... It almost sounds as though Firefox and chrome are incorrect in allowing the borders to overlap in my original code.
Many thanks again
I can't remember what the result was in Firefox/Chrome but in those browsers when an element is too big for its container it simply overflows. If you tell an inner element to be 10px bigger than its parent they will still lace the element but the 10px overlap will just spill out of the container and be ignored.
IE6 on the other hand always tries to expand a container to accept its content. It will stretch the parent if it finds no room anywhere else or in the case of floats will drop them down to find more room.
The long and short of it is that in all browsers you must make sure that things fit or results will be unreliable or at least different. Usually doing things right results in things working better