Best not to use a BlankNullSequence unless you have to because the pattern matcher will spend forever trying to match anything you throw at it. Not to mention, if 2 args is all f takes, you would need an additional check on the length in order to determine if it has the proper number of arguments.
f[x_, ___] := 1;
g[x_, _] := 1;
In[14]:= args = Sequence @@ Range[10^5];
In[15]:= Do[f[args], {1000}] // AbsoluteTiming
Out[15]= {3.135620, Null}
In[16]:= Do[g[args], {1000}] // AbsoluteTiming
Out[16]= {1.934412, Null}
-Andy