Quebien:
No hay magia. El flujo en el html y los estilos aplicados mediante css están diréctamente relacionado con las premisas iniciales (con el comportamiento inicial que dices tienen que tener las cajas centrales).
Primero tenemos una estructura de 3 columnas: vale, necesitamos flotar las cajas para que se posiciones en la misma línea. Podríamos haber puesto en el html: #izquierda - #centro - #derecha. Pero -->
La columna central debe crecer para ocupar el espacio libre en función de la ventana y de si existe o no alguna de las laterales: ok, ya no podemos darle un tamaño, porque si hiciésemos eso no variaría junto a la ventana. El no tener tamaño definido ocupa el espacio que le queda, lo que fuerza a colocarla en el flujo del html después de la caja derecha, si no lo hacemos así, ocurre lo que ya has descubierto ocupa toda la horizontal dejada libre por #izquierda y desplaza a #derecha a la línea siguiente (cuanto ella termine).
¿Por qué no se pueden utilizar márgenes en #centro? Porque como bien dices,
Alexk, otra condición a cumplir era que ocupase el espacio que deje libre una de las laterales.
En este caso no hay peligro de colapso, pues si te fijas, hay definido un min-width de #contenedor (que contiene a las tres columnas centrales) fijado en 970px, con su equivalente para ie en el c.c.
Añadir que sería conveniente fijar un max-width para esa caja con vistas a las "super pantallas de cine en casa"
Quebien, si utilizas webdeveloper junto a FF puedes tú mismo desactivar el css y ver qué ocurre.
Pero un tirón de orejas deberíais haberme dado
Hay un mal uso de cierta etiqueta.
Os dejo unas horas a ver si alguien lo descubre.
Un saludo.
P.D.: perdón por el rOOOOOOOllOOOOOOO que acabo de soltar.