Porque, en el futuro, si cambia la implementación, el código que utiliza la interfaz actual no se romperá.
Por ejemplo, implementa una clase simple con un campo público y comienza a usar su clase en algunos módulos externos. Un mes después descubre que necesita implementar la carga diferida en esa clase. Entonces necesitarías transformar el campo en una propiedad. Desde el punto de vista del módulo externo de ciew, puede parecer el mismo sintaxis, pero no lo es. Una propiedad es un conjunto de funciones, mientras que un campo es un desplazamiento en una instancia de clase.
Al usar una propiedad, efectivamente se reduce el riesgo de que la interfaz cambie.
posible duplicado de [getters y setters implementados automáticamente frente a campos públicos] (http://stackoverflow.com/questions/111461/auto-implemented-getters-and-setters-vs-public-fields) – nawfal