al aplicar width:100% considera que el 100% es con respecto a la ventana del navegador si el contenedor supera este 100% no implica que header y footer también tengan que hacerlo.
Supongo que tu contenedor tiene un ancho definido en pixeles o algún valor absoluto... tu solución estaría en aplicar min-width al header y al footer, de tal manera que si la ventana del navegador es inferior al tamaño requerido el header y footer estén obligados a tomar el tamaño mínimo requerido.
Nota Informativa: min-width no funciona para IE6 lo ideal no es dar soporte a este navegador pero si te es muy necesario puedes pasar a este aporte del Sr. Mikmoro
-> clic aquí