Static você utiliza quando quer que algo esteja vinculado à classe e não às
instâncias, é uma forma de você ter algum controle geral de alguma coisa em
todos os objetos gerados ou mesmo em outras classes (se for public).
Tem que avaliar bem em que situações você utilizará isso, existe um
Design Pattern chamado Singleton que é utilizado para criar uma única
instância de um objeto apenas quando ele realmente for necessário.
Alguns autores já falam que static não é recomendado por "desvirtuar" a
programação orientada a objetos, mas em termos de conceitos, você tem
que ver o que fica mais adequado ao seu projeto, também pensando que
a cada instancia criada terá um consumo maior de memória e um custo
de criação de cada objeto, pois a criação também leva um certo tempo e
um certo processamento.