Хотелось бы подметить, что для больших проектов использование XML вместо аннотаций удобнее, т.к. можно последить весь маппинг в одном месте. Когда же маппинг размазан по классам, навигация становится затруднительной. Естественно, это относится к тому случаю, когда используемая IDE не поддерживает визуализацию маппинга, построенного на аннотациях.
Вторым аргументов в пользу XML является то, что при поддержке сервера с рабочим приложением при отсутствии актуальных (для данной конкретной версии) исходников наличие файла с маппингом — большой плюс.
Многие начинающие программисты, которые еще слабо владеют предметом ООП, наследуют от утилитных классов (встречал при доработке кода в подобных проектах).
С точки зрения удобочитаемости лучше помимо приватного конструктора объявлять класс final. Современные IDE по этому модификатору помечают класс специальной иконкой, что позволяет наглядно выделять подобные классы в списке. Также это является дополнительным документированием направления мыслей разработчика.
Вторым аргументов в пользу XML является то, что при поддержке сервера с рабочим приложением при отсутствии актуальных (для данной конкретной версии) исходников наличие файла с маппингом — большой плюс.