Good point! In fact one can argue that Julia has optional arguments in any position, not just trailing. Eg consider
rand([rng], [S], [dims...])
It is just that it has syntactic sugar for trailing optional arguments. Perhaps syntax could be introduced for the other kinds, eg
foo(a = 1, b, c = 3)
Of course foo(4, 5) is ambiguous, but we already have mechanisms for dealing with that.