Pasa porque en css una caja no debe crecer si crecen otras cajas que lleve dentro flotadas (IE lo interpreta mal y siempre crece, lo que suele producir otros problemas).
Entonces para que crezca, hay que producir un corte, un salto de línea, lo que obliga a que el espacio "virtual" que ocupan las cajas flotadas se convierta en espacio "físico", y entonces la caja contenedora sí crece para albergar a las que tiene dentro.
El último error se debía a que, aunque fuerces ese corte, si dices que la caja mide el 100%, mide el 100% y punto, y el corte no puede cambiar eso (no así en IE, que hace lo que le da la gana y crece siempre).
Me alegro de haberte ahorrado tiempo y quebraderos de cabeza
Mikel.