My general thinking around tuples is that when you start doing things like assigning names to them (typealias T = ...) or trying to reach for other behavior to add to them, it's really just time to make it a dedicated struct.
The tuple may be provided by the API and the API author may not need to give it a typealias name or an added functionality. OTOH the user of this API may have such a need, and he or she can't change the tuple to a struct.
Fun fact: default arguments used to be part of the tuple's type in the Swift 2 days, when functions would semantically always have a single input value, which could be a tuple. This caused no end of trouble!
However, you can probably do what you want with a macro. Have the expansion emit a function that takes the parameters with defaults and forms a tuple value from those arguments. Or even just write that function by hand.