Yes, if your "ad_proc"-defined proc encounters a "--" as it loops through its arguments, it assumes that every subsequent argument is no longer a "switch". The native Tcl "proc" only supports arguments, the concept of a "switch" is an OACS add-on via "ad_proc".
I think the golden rule should be: if any of the arguments to your ad_proc could potentially contain a "-", then separate the switches from the arguments with a "--".