Fala aí, Arthur!
Tudo bem?
Então, ele colocou esse 'novo_nome' porque quando você define um setter você quer justamente alterar o que estava lá inicializado com o método construtor(init). 
Vou tentar ser mais claro:
class alunos:
        def __init__(self, nome, idade):
                self._nome = nome
                self. _idade = idade
@property 
def nome(self, nome):
        return _nome
@nome.setter
def novo_nome(self, novo_nome):
        self._nome = novo _nome.title()
arthur = Alunos("Arthur", 23)
- Quando iniciamos o construtor, essa seria a saída: - .     print(arthur.nome) 
.     >>>   "Arthur"
 
- Agora você decidiu alterar o nome, de Arthur para Patrick. Criamos a propriedade setter que irá alterar um atributo privado (Lembrando que o '_nome' torna ele privado.) 
arthur.nome = "Patrick"
*nesse caso o nome é o MÉTODO SETTER e não a variável*
.     print(arthur.nome) 
    .     >>>   "Patrick"
Com isso, é realmente o mais indicado colocar novo_nome como parâmetro para alterar o atributo do init.
Espero que essa dica tenha sido útil.  =)