Лезть в поля другого класса в цикле, это немного извращенно (не всегда конечно)
Имхо, тут та же история как и в "табы vs пробелы".
Вкусовщина.
Если поле не должно быть публичным - делаешь приватным.
Если поле должно быть доступно снаружи - делаешь публичным.
Если доступ к полю должен сопровождаться дополнительной логикой - делаешь свойство.
Исключение: если делаешь либу и проектируешь API - то тогда да, лучше хотя бы автосвойство.