[/quote]
Потому что не должна. Любой блок в прямом потоке, если ему не задана явная ширина, занимает по ширине все доступное ему пространство, предоставленное ему родительским элементом. В данном случае родительским элементом выступает body, ширина которого равна ширине элемента html (ширине окна браузера).
[/quote]
Поскольку ширина блоков в прямом потоке ни коим образом не зависит от контента этих блоков, для прямого потока сделать это можно только одним способом: задать необходимую ширину либо самому блоку #main, либо одному из его родительских элементов. Еще как вариант можно рассматривать назначение блоку #main либо float: left, либо position: absolute. Абсолютно спозиционированные блоки, а также блоки, к которым применено свойство float, перестают занимать по ширине все доступное пространство. Их ширина определяется именно их содержимым...
[/quote]
Потому что это IE, который не лезет ни в какие рамки стандартов...