Take a look at this similar question. This link also gives some more examples and a more detailed explanation.
To sum up the arguments (from the second link):
Class.newInstance() can only invoke the zero-argument constructor,
while Constructor.newInstance() may invoke any constructor, regardless
of the number of parameters.
Class.newInstance() throws any exception thrown by the constructor,
regardless of whether it is checked or unchecked.
Class.newInstance() requires that the constructor be visible;
Constructor.newInstance() may invoke private constructors under certain
circumstances.
Sorry for editing my post to add more quotes, but this explains it better than I could.
The Javadoc for Class.newInstance() explains it like this:
Creates a new instance of the class represented by this Class object. The class is instantiated as if by a new expression with an empty argument list. The class is initialized if it has not already been initialized.
Note that this method propagates any exception thrown by the nullary constructor, including a checked exception. Use of this method effectively bypasses the compile-time exception checking that would otherwise be performed by the compiler. The Constructor.newInstance method avoids this problem by wrapping any exception thrown by the constructor in a (checked) InvocationTargetException.