Für eine Property wird/wurde
RTTI generiert (Hinweis auf published). Das ist mal der pragmatische Grund warum Properties sehr bliebt waren/sind neben den hier angeführten Gründen. Das hat dazu geführt, dass das Konzept ein wenig überstrapaziert wurde.
Properties sind uralt und waren tatsächlich gedacht für Datenvalidierung im Falle von Verbundstrukturen. Das Konzept der Property ist so alt, da gab es grad mal Klassen in Smalltalk in den Papers.
Du kannst die interne Repräsentation eleganter von der Außenwelt verstecken. Du weist String zu und speicherst intern bspw. eine exaktere Struktur.
Wenn du nur lesend zugreifst mache einfach eine Funktion.