Na minha opinião, as variáveis de instância são necessárias apenas quando os dados serão usados nas chamadas.
Aqui está um exemplo:
myCircle = myDrawing.drawCircle(center, radius);
Agora vamos criar imagens da classe myDrawing usando 15 funções auxiliares para criar o objeto myCircle e cada uma dessas funções precisará do centro e do raio. Eles ainda não devem ser definidos como variáveis de instância da classe myDrawing. Porque eles nunca mais serão necessários.
Por outro lado, a classe myCircle precisará armazenar o centro e o raio como variáveis de instância.
myCircle.move(newCenter);
myCircle.resize(newRadius);
Para que o objeto myCircle saiba qual é o seu raio e centro quando essas novas chamadas são feitas, elas precisam ser armazenadas como variáveis de instância, não apenas passadas para as funções que precisam delas.
Então, basicamente, variáveis de instância são uma maneira de salvar o "estado" de um objeto. Se uma variável não é necessária para saber o estado de um objeto, então não deve ser uma variável de instância.
E quanto a tornar tudo público. Isso pode tornar sua vida mais fácil no momento. Mas vai voltar para te assombrar. Por favor, não.