Can I always use variable-length argument lists instead of arrays in argument types whenever is a choice?
so basically it is your choice :

with optional params you cannot enforce user to input the value, so user can leave giving any input and complier will not complain. 

new Options().withColumns();


with list of string , you need to give at least one value , value can be null.

new Options().withColumns(null);


so it all depends upon your use case.In this case table will always have columns so passing a array of column will make sense.