この同様の質問を見てください。このリンクには、さらにいくつかの例とより詳細な説明もあります。
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.
投稿を編集して引用符を追加して申し訳ありませんが、これは私ができるよりもうまく説明しています。Class.newInstance()のJavadocは、次のように説明しています。
このClassオブジェクトによって表されるクラスの新しいインスタンスを作成します。クラスは、空の引数リストを持つ新しい式のようにインスタンス化されます。クラスがまだ初期化されていない場合、クラスは初期化されます。
このメソッドは、チェックされた例外を含め、nullaryコンストラクターによってスローされたすべての例外を伝播することに注意してください。このメソッドを使用すると、コンパイラによって実行されるコンパイル時の例外チェックを効果的にバイパスできます。Constructor.newInstanceメソッドは、コンストラクターによってスローされた例外を(チェックされた)InvocationTargetExceptionでラップすることにより、この問題を回避します。