Eu discordo, mangad2.
Inicialmente ele foi implementado pois era uma escolha lógica, era um comando que remetia diretamente a instrução jump, do assembly. E era com o jump que os engenheiros da época estavam acostumados. Isso não significa que a escolha tenha sido acertada, quer dizer, só po rque alguém já fez um dia, devemos continuar fazendo hoje.
Aliás, se você ler um livro de C++ (ou de qualquer linguagem de legado), vai ver uma série de recomendações do que não se deve fazer. E usar goto é uma delas. Pegue por exemplo o livro “A linguagem de programação C++”, do Bjarne Stroustroup, criador do C++, na página 132 da 3a edição traduzida. Lá ele explica o comando goto com a seguinte ressalva: “Um dos poucos usos do goto que fazem sentido em código comum é sair de um laço aninhado ou de um comando switch (um break sai fora somente do laço ou comando switch mais interno que o inclua)”. Note que é exatamente a situação que o break condicional do java implementa.
O goto não é a única coisa que as linguagens modernas tem evitado. A definição de constantes no lugar de macros, a redução de escopo de variáveis, uso de herança múltipla, e o uso cada vez mais incomum de linguagens com suporte de aritmética de ponteiros é um sinal de que a coisa tem evoluído.
É lógico que se você for um bom programador, disciplinado, você vai fazer um bom uso do goto ou de qualquer uma das coisas que falei acima. Entretanto, um dos pontos fortes do java é o fato de você não precisar ser um programador assim para programar bem. Já leu um manual de C++ ou um livro como Effective C++?
Programar C++ é como andar num campo minado. No menor descuido, você pode fazer uma besteira, inserir um erro maquiavélico ou deixar o seu código muito difícil de se manter. Tanto que bibliotecas inteiras, como a Boost, foram inventadas para driblar os erros comuns dos programadores, livros foram escritos para ensinar o que é bom e o que não é bom se fazer no código.
Acho que o Java foi uma evolução natural desse processo. Quando os programadores criaram o Java, retiraram tudo de potencialmente perigoso que tinha no C++. Viram que não adiantava manter um comando como goto para uma ou duas situações específicas. Pesaram o que causava mais mal do que bem e retiraram fora. E fizeram uma linguagem que é realmente um prazer de se programar.