Ответ 1
По определению, объект - это класс, который может сохраняться в базе данных, поэтому наличие конечного поля не имеет смысла в контексте того, что в конечном итоге станет записью в вашей базе данных. Требование не иметь окончательного класса и никаких окончательных методов не связано с тем, как реализация JPA действительно имеет дело с сохраняющимися экземплярами классов ваших объектов.
Обычно реализации должны подклассифицировать ваш класс во время выполнения и/или добавлять байт-код динамически к вашим классам, чтобы обнаружить, когда произошло изменение объекта сущности. Если ваш класс объявлен как final, то это будет невозможно.
Есть, конечно, гораздо больше причин, чем просто те, вот статья, в которой содержится дополнительная информация о том, как ORM в целом работает за которые могут помочь вам лучше понять другие требования к объектам JPA.