This is explained in the documentation:
If SyntaxLength returns a position past the end of the string, it
indicates that the string is syntactically correct as far as it goes,
but needs to be continued in order to correspond to input for a
complete Wolfram Language expression.
which is exactly what we see:
In[6]:= SyntaxLength["("]
Out[6]= 3