An dieser Stelle nochmal der Hinweis auf mein voriges Posting und die dort verlinkte Lösung per display: block;, die die zuverlässigste ist, die "Lücken" zu beseitigen - siehe auch
DOCTYPE-Switch: Unerklärliche Lücken zwischen Elementen.
Abgesehen davon, daß eine Lösung per float hier eh besser wäre, denn dann kannst Du auf die (für Skalierbarkeit ungünstige) abs. Pos. von
#header p verzichten.