Bem, eu encontrei outra maneira de fazer o design. Mais porque o design evoluiu do que um workaround.
Ouvi no entanto de um colega, que teve o mesmo problema, que restrições únicas só são criadas pelo hibernate (estamos rodando o JBoss 4.3) quando todo o banco de dados é criado. Não funcionará quando você criar uma nova tabela em um banco de dados existente.
Então em persistence.xml é necessário definir
hibernate.hbm2ddl.auto
para create-drop
para fazê-lo funcionar. Eu não posso confirmar isso embora.