Объяснение, к сожалению, очень простое - браузеры, отступая от
стандарта, предпочитают верить заголовкам сервера. Насколько я помню
стандарт, там жёстко не регламентируется приоритет, вроде только
обязательное наличие charset в тегах саомго HTML документа. Если бы я
писал браузер, я бы приоритет повесил на charset в самом документе, уж
не документу ли знать в каком он charset ? :)