Zkus měnit výšku #div1
XXX
YYY
ZZZ
AAA
BBB
CCC

Margin-left je třeba kvůli různé výšce levé části. Zkus si ji změnit na něco kolem 25px. Pokud by #div1 byl zaručeně alespoň stejně velký jako #div2, nebyl by potřeba.

Overflow zase zaručuje ukončení obtékání, zachrání situaci, když by levý sloupec byl delší než pravý. Pokud by byl #div2 delší nebo roven #div1, nebyl by potřeba.

Tvůj problém je v tom, že jakmile něčemu dáš float, ztratí to možnost automatické velikosti.