As @property são funções que são acessadas como atributos das classes, quase como se tivesse declarado no init.
Elas são úteis quando você precisa de um tratamento para alguma propriedade da classe porém não precisa receber parâmetros, como no caso do cálculo da média que utiliza informações que a classe Restaurante já tem.
E também, para a média de avaliações, faz sentido o decorador @property, pois a média é um atributo do objeto restaurante, porém ela não é um valor fixo, ela deve ser calculada sempre com os valores atuais da soma de todas as notas recebidas dividida pela quantidade de avaliações. Então cada vez que essa propriedade for acessada ela é recalculada tendo a certeza de que está utilizando todas as avaliações recebidas.
Existe outros usos como acesso de propriedades protegidas (aquelas com o _ antes do nome).
Você pode ter mais detalhes nesse link: https://pythonacademy.com.br/blog/como-utilizar-property-no-python
Espero que tenha ajudado.
Um abraço