Почему страница помнит ранее созданный Singleton при генерации отчетов (npoi)?
В моем понимании, если я перегружаю страницу, да еще и с другими GET параметрами, все экземпляры классов должны создаваться заново, откуда старый экземпляр?
Singleton существует на уровне приложения, а не на уровне запроса одного пользователя.
Дык на то он и Singleton =)  Даже если его звать из другого контроллера, то экземпляр будет один и тот же, который был создан при самом первом обращении. 
Похоже, вам тут это совсем не нужно, почему бы не использовать new XSSFWorkbook() каждый раз?