Я не могу объяснить, почему это происходит (это также сводит меня с ума)
Но я могу предложить решение вашей проблемы: сделать это с помощью CSS вместо JS!
Вы можетесделать это с помощью медиазапросов для создания другого макета для портрета и ландшафта:
@media all and (orientation: portrait) {
...
}
@media all and (orientation: landscape) {
...
}
и с помощью CSS3 для автоматического изменения размера изображений с сохранением их соотношения сторон:
background-position: center;
background-repeat: no-repeat;
background-size: contain;
ВотJSFiddle со всем необходимым кодом: http://jsfiddle.net/BULxm/
Hele - это прямая ссылка на результаты для тестирования на iPad: http://fiddle.jshell.net/BULxm/show/