MemberQ would need to know that its first argument is sorted.
However the only option it takes is in order to check for the variable type instead of the variable value:
In[1]:= Options@MemberQ
Out[1]= {Heads -> False}
Short of any global internal variable that I am not aware of there therefore seems to be no way to affect the Search algorithm.
It’s a great idea though, so I filed an according suggestion for you.
Over 250x speed-up for an input list of 10k elements
I’ve always been more comfortable with closures outside of Mathematica in more traditional functional languages like Lisp/Racket/et al. A colleague of mine wrote a neat little blog post a while back about closures in Mathematica: http://searke.blogspot.com/2011/05/two-techniques-in-functional.html A very nice and neat exposition that inspires the above code.