Entiendes lo que hace el código,
Tu cuando llamas a
En realidad en tu clase no existe dicho método, entonces cae en la función _call
$prefix = set y $property = marca
Es decir en este caso quieres hacer set sobre el atributo marca.
al hacer $this->$property lo que haces en realidad $this->marca pues es el valor de $property.
Si haces $this->property en realidad no setearas marca si no el atributo property que no existe en tu clase.
SALUDOS
Es lo que te comento GatorV mas arriba.