Alla fine ho risolto
Semplicemente avevo dimenticato di fissare l'height:auto in uno dei div centrali ed era rimasto ancorato ad un'altezza fissa. Quindi il div si allungava fisicamente ma il margine veniva calcolato rispetto all'altezza fissata in css. Il problema resta con safari che continua comunque a salire: per il momento ho usato il noto hack dell'asterisco. In attesa di capire in che cosa Safari possa differire nel calcolo del margine da IE e Firefox ...
Grazie comunque per l'aiuto