Oi, Mauricio! Tudo bem?
A diferença principal aqui está relacionada ao escopo e à forma como a variável restaurantes é acessada. Quando utilizamos Restaurante.restaurantes.append(self), estamos acessando a lista restaurantes como um atributo da classe Restaurante, o que é importante porque restaurantes é uma variável de classe, ou seja, ela é compartilhada por todas as instâncias da classe Restaurante. Usar o nome da classe seguido de . é a maneira correta de acessar variáveis de classe em Python.
Por outro lado, se tentarmos usar apenas restaurantes.append(self), o Python vai procurar por uma variável de instância chamada restaurantes dentro do contexto do método __init__, como essa variável não existe no contexto de instância, isso resultaria em um erro.
Portanto, é necessário especificar Restaurante.restaurantes para garantir que você está se referindo à lista de classe que armazena todos os objetos Restaurante criados.
Espero ter ajudado!
Um forte abraço e bons estudos!