Olá Lorran, utilizando como fonte o livro Java The Complete Reference, Ninth Edition, eu fui capaz de encontrar algumas respostas para suas perguntas.
porque esse método tem que pertencer a classe?Pq nao poderia seria pertencer aos objetos?
Na página 25 ele fala que o uso da palavra static permite que o método main() seja chamado sem que haja nenhuma instância em particular da classe já criada. Que isso é necessário pois o main() é chamado pela JVM antes que qualquer objeto seja construído.
De novo ainda falando sobre a keyword static, na página 145 ele fala que quando um membro é declarado como estático ele pode ser acessado antes que qualquer objeto desta classe tenha sido criado, e sem qualquer referência a qualquer objeto.
É por essa motivação que o método main precisa ser declarado como static pois a JVM começa a execução da classe por ele.
Outra questão é sobre o String[] args para que é obrigatório esse array se na maioria dos casos não queremos passar parametros ao método main?
Na mesma página 25 ele também comenta sobre isso. Ele cita novamente que o método main() é o método chamado pelo Java quando a aplicação começa, e que qualquer informação que você precise passar para um método qualquer é recebida por variáveis dentro dos parenteses, e que mesmo que não seja preciso passar nenhum parâmetro para esse método você ainda precisa incluir os ().
Ocorre que no método main( ), existe apenas um parâmetro, embora complicado ("albeit a complicated one"), conforme está no livro.
String args[] declara um parâmetro nomeado args, que é um array de instâncias da classe String. args recebe qualquer argumento passado na linha comando quando o programa é executado.
Eu sei que a sua pergunta pra que esse array é obrigatório e não o que é ele, mas eu quis colocar a explicação acima porque eu acho que agora então fica mais fácil de entender e aí vem minha dedução. Creio que seja para quando for necessário se receber argumentos. Apenas isso! É como ele diz logo abaixo no livro: "This program does not make use of this information, but other programs shown later in this book will". (i.e ele está falando de um exemplo de código dado, que não fazia uso do array mas que outros programas podem fazer).
Eu poderia colocar aqui toda a informação na íntegra em inglês, mas creio que você pode ter acesso ao livro de alguma forma! Mas eu coloquei aí meu caro da forma mais clara que eu consegui!
Abraço!