Okay, the problem was in hibernate, not in postgres. In Hibernate 6 hibernate.timezone.default_storage now defaults to DEFAULT, meaning:
if the database/dialect supports it, time zones of date/time values are stored by using the timestamp with time zone SQL column type;
otherwise, time zones of date/time values are not stored, and date/time values are normalized to UTC.
In Hibernate ORM 5, time zones were not stored, but normalized to the time zone set in hibernate.jdbc.time_zone, the JVM time zone by default.
To revert to Hibernate ORM 5’s behavior, set the configuration property hibernate.timezone.default_storage to NORMALIZE.