Depois de apanhar um pouco com cookies (queria usar response.addCookie e ele me lançava uma exceção), fui ler o fonte do Tomcat (open-source é legal por causa disso…) e descobri o seguinte:
Caracteres proibidos em cookies (response.addCookie) para versões anteriores do Tomcat 5.0.X
( ) < > @ , ; : \ " / [ ] ? = { } espaço \t
Caracteres proibidos em cookies para a versão 5.0.28
,;
Por via das dúvidas, resolvi usar o cookie do jeito que queria usar (valores separados por vírgulas, e alguns valores continham espaços); só que codifiquei o cookie em hexadecimal antes, para evitar problemas. (Aí o cookie só tinha valores de 0 a 9 e de A a F, sem caracteres que dão problemas com o Tomcat. Como não é difícil escrever um Javascript que converte o hexadecimal, então…