Yes, there is a reason. This code was added to call methods with a `params string[]` parameter.
The Invoke() method wait for a object[] parameter containing all the parameters (that's why there is a new object[]). In our case, here, there is only one parameter which is of type string[] (that's why args.ToArray())