Als Attribute der inneren beiden <div>s. Obwohl ich mir im Moment gar nicht so sicher bin, ob Dir das weiter hilft, da left und right nur funktionieren, wenn position auf absolute (oder relative) gesetzt ist - dies wiederum erlaubt aber nicht, dass Dein äußeres <div> seine Höhe an die inneren anpasst.
Bei relative sollte die Höhe schon angepaßt werden.
Schon, nur bekommt er damit nicht das rechte <div> in die rechte Hälfte ohne unter dem linken <div> den leeren Platz des rechten <div>s zu haben. Ohne float und mit position:relative folgen die beiden inneren <div>s ganz normal aufeinander, nur dass das :relative-Element anschließend verschoben wird und an der ursprünglichen Stelle ein Loch hinterlässt.
Und obendrein weiß er ja nicht, um wieviel er das rechte <div> nach oben schieben muss - top ist bei position:relative relativ zur normalen Position des jeweiligen Elements, nicht wie bei :absolute zur Position des übergeordneten.
Was doch noch funktionieren könnte: Sofern in das äußere <div> nicht noch andere Sachen rein sollen, ist ein float bei den beiden inneren Elementen überflüssig, sinnigerweise beim linken, weil dort momentan das Problem auftaucht.
Noch 'ne Variante, klang hier schon von jemand anderem an: Beiden inneren Elementen statt eines Außenabstands einen orangen Rahmen verpassen.
Gruß,
soenk.e