Interestingly, while Tcl 8.6 was changed to disallow non-optional arguments following optional arguments, it didn't address non-unique names in the same wash.

Btw., your expectation ("it'll just discard the first two args at run time") is not the right one, because instead it only uses the first one of the values.