В этом блоге есть интересная дискуссия о достоинствах обоих. Раздел ниже - цитата из этого блога:
Свойства могут быть определены файлом свойств или файлом XML. Log4j ищет файл с именем log4j.xml, а затем файл с именем log4j.properties. Оба должны быть помещены в папку src .
Файл свойств менее подробен, чем файл XML. XML требует, чтобы log4j.dtd также был помещен в исходную папку. XML требует dom4j.jar, который может отсутствовать в старых версиях Java.
Файл свойств не поддерживает некоторые расширенные параметры конфигурации, такие как Фильтры, пользовательские ErrorHandlers и специальный тип вспомогательных устройств, например AsyncAppender. ErrorHandlers определяет, как обрабатываются ошибки в самом log4j, например, плохо настроенные приложения. Фильтры интереснее. Из доступных фильтров я думаю, что фильтр диапазона уровней действительно отсутствует для файлов свойств.
Этот фильтр позволяет определить, что [n] appender должен получать сообщения журнала с уровня INFO на WARN. Это позволяет разделить сообщения журнала между различными файлами журнала. Один для сообщений отладки, другой для предупреждений, ...
Appender поддерживает только минимальный уровень. Если вы установите для него значение INFO, вы также получите сообщения WARN, ERROR и FATAL.
Обращаясь к комментариям к моему первоначальному ответу: курсив - мой акцент. В целях данного руководства автор решил скрыть или непреднамеренно пропустил, что свойства или xml должны находиться только в пути к классам, а не в папке src. Простой способ добавить их в путь к классам - добавить их в папку src, поэтому для целей учебника это было явно сочтено достаточным.
Ничто из этого не имеет прямого отношения к заданному вопросу или намерению ответа, а именно к обсуждению преимуществ или иного использования XML-файлов для настройки log4j. Я считаю, что остальная часть цитаты актуальна и полезна для тех, кто хочет сделать осознанный выбор.