Жесть.
Попробуйте получить эти страницы на любой ОС и Висте целиком, вместе с заголовками, сохранить и сравнить побайтно. Терминалом, CURL, просмотреть заголовки TamperData под FireFox (не совсем от, зато быстрее). Это даст возможность убедиться, что либо:
1. вы получаете абсолютно, байт в байт, одинаковые страницы, и шарики за ролики заехали у связки Висты + браузера;
2. вы получаете неодинаковые ответы. Это интереснее, и варианты такие:
2.1. виста делает каку во время приема. Маловероятно, непонятно, почему не портятся идентичные данные от продакшна. Проверяется установкой буффера-монитора на сервере, и смотрится, отличаются ли данные переданные сервером от принятых Вистой. Выводы по результату.
2.2. кака происходит на этапе генерации контента для висты, поскольку ДО этого произошел некий сбой. Допустим, мы получили от висты что-то не то, и это что-то влияет на генерацию нашего вывода. Тут трудно что-то говорить не видя кода и логики работы. Проверяется методом установки страницы, которая бы в любую погоду и время суток выдавала бы всем "Привет, мир!"
2.3. кака происходит в мозгах томката. Если возможно его изолировать и промониторить вход-выход - просто чудесно. Этот вариант мне кажется наиболее вероятным при учете того что код должен быть одинаков и клиенты тоже не сильно отличаются. Итого - сервер единственная лошадь, которая вполне вероятно может влиять на вывод при прочих равных.
Как частный случай - у теста в отличие от прода установлен высокий уровень варнингов, и при выдаче страницы до самого html проползает некий символ/короткоей сообщение, используемый для трейса. Браузер его ловит до заголовков и автоматом выбирает кодировку. Условия появления ошибки и соответствующего символа трейса таковы, что он вылазит лишь если на клиентской стороне Виста.