Я думаю, что для переменных сущности имеет смысл не быть окончательными, поскольку они синхронизируются с БД, но почему для класса и методов ??
Потому что поставщики персистентности создают прокси объектов, используя некоторую библиотеку, такую как CGLIB или javassist. Эти прокси создают подклассы времени выполнения сущностей. Вот почему они не должны быть окончательными.