Zacznijmy od podstaw XHTMLa:
div#example1 {
width: 200px;
height: 200px;
border: 1px;
}
Pytanie: Jakie wymiary ma blok
example1 ?
Odpowiedź:
To zależy 
IE: 200x200px
FF, Opera: 202x202px

Stąd czasem nieścisłości. Oki, to może się przydać, lećmy dalej.
To co chcesz zrobić to:
div#container {
margin: auto;
width: 600px;
overflow: auto;
}
div#leftColumn, rightColumn {
float: left;
width: 150px;
height: 200px;
background-color: #f00;
}
div#middleColumn {
float: left;
width: 300px;
height: 400px;
background-color: #0f0;
}
Wszystko pasuje i przylega.
Ale jak teraz dodasz obramowania ... to w związku z tym od czego zacząłem, w IE będzie to czego się spodziewasz a w FF/Opera bloki polecą na dół.
Oczywiście nie muszę mówić że to FF/Opera poprawnie interpretują kod XHTML a "błędy" wynikaja z tego że koderzy przyzwyczaili się porównywać wszystko do IE

Mam nadzieję że o to chodziło i wystarczająco naświetliłem sprawę.
P.S.
Pisane z palca i nie testowane, mogła wkraść się literówka.