A ver si soy capaz de explicarlo.
Al definir el div con "float", haces que el contenedor no se incremente (bueno en IE si, pero en el resto no).
O sea que tienes 2 posibilidades: o no pones el float, o le pones al contenedor la altura del div que flota.
Por supuesto, cuando no sabes la altura que va a ocupar el que flota la cosa se hace más difícil.
Creo recordar que hay algún truquillo para solucionarlo, pero realmente no se dónde lo leí