Using an array of parameters can be handy if you really don't know how many parameters are going to be provided, however it may require a lot of runtime type checking and casting if you only pass them in as objects.
Overloads allow you to define several version all of which are strongly typed and generate sensible tooltips in the IDE to make it easier for developers to see the names and types of parameters involved.
I personally prefer overloaded functions and tend to follow the MS standards of providing overloaded functions for 1,2 or 3 optional parameters and if more are required also providing a version that accepts an object array. eg see
Console.WriteLine
and it's overloads involving one, two, three and many objects.