Quasi sempre, come motivo per preferire le proprietà pubbliche ai campi pubblici di istanza, si presenta quello della possibilità di validazione dei valori nella classe corrente o nelle classi derivate.
Ne ho trovato invece un altro, molto interessante, nel libro di Lowy (p. 378, sottolineatura mia):
"Neither programmatic nor declarative security can protect against untrusted code accessing public fields because no stackcalls are involved. Never provide public fields, and always use properties".