Chamada explícita vs implícita de toString

Eu costumava usar a chamada implícita de toString ao desejar algumas informações de depuração sobre um objeto, porque, no caso de o objeto ser nulo, ele não lança uma exceção.

Por exemplo:

System.out.println("obj: "+obj);

ao invés de:

System.out.println("obj: "+obj.toString());

Existe alguma diferença além do caso nulo?
O último caso pode funcionar, quando o primeiro não?

Editar:
O que exatamente é feito, no caso da chamada implícita?

questionAnswers(5)

yourAnswerToTheQuestion