結論
自前の関数なら同名の関数をoverloadできます。
// 配列を引数に取る関数側にロジックを実装する
func greet(_ people: [String]) {
print("Hello, \(people.joined(separator: ", "))!")
}
// 可変長引数を持つ関数側では、内部で配列を引数に取る関数を呼び出す
func greet(_ people: String...) {
greet(people)
}
言語仕様として、引数に渡すときに配列を展開することはできないので、フレームワーク内の可変長引数(例えば、printなど)の関数に配列を渡すのは現状は難しいようです。
参考
Passing an array to a function with variable number of args in Swift