se assegni l'altezza è ovvio che il div finisce...
glielo dici tu!
se vuoi che l'altezza vari a seconda del contenuto devi usare il min-height, non l'hieght.
ovviamente min-height non è supportato da quel simpaticone di IE, ma è semplicemente aggirabile il problema.

min-height: 100px;/*misura per browser seri*/
height: auto!important;
height: 100px;/*misura per IE;*/

p.s. il 100% è l'altezza della pagina, non quello del contenuto.