The print array example that you used only prints an int. You are requesting the value at index 0, then printing the returned int to the console. Your example is the equivalent of creating your own object and printing the result of a method you called. For example:
class A {
public String getValue()
return "my text";
}
}
A a = new A();
system.out.println(a.getValue());
To answer your question, system.out.println is a method that will take an object and use a standard method to pull the text from the given object. If Object didn't do this, you would still be required to create your own toString() equivalent method in order to print out information from an object.
If you would rather have toString() print out all of the information contained in an object, you would end up getting a bunch of really useless information.