Bueno te puedo decir que está implementado al igual que c++ para pasar argumentos al momento de ejecutarlos por ejemplo en DosAclaro que no es exactamente igual en C++, sólo en esencia; mientras que en C++ tienes que especificar cuantos son los parámetros que se le pasan al método principal, Java es más flexible al poner un array de tipo String en vez de poner varios parámetros.
Mi duda es cuando es necesario utilizar este procedimiento en que casos?Cuando el programa es de consola (no GUI) y puede actuar de varias formas dependiendo de los parámetros que se le pasen. Prácticamente todas las utilidades en consola suelen recibir parámetros para poder ajustar su funcionamiento. Por ejemplo: