There wouldn't be a family of traits. You would have the same traits, but variadic under the hood - you wouldn't be able to define and name them, but the closure type grammar is enough for that.
Tupling is a serious issue, you need devirtualization, inlining and SROA to happen in order to remove the overhead, so any remaining virtual closure calls (or even unboxed closure calls that don't inline) will have to read all their arguments from behind a pointer, instead of registers or direct stack offsets.
Right now this also causes the loss of argument attributes, so it would prevent certain optimizations in *all* closures, before we get TBAA.