OptionQ seems effectively deprecated in favor of OptionsPattern, but I cannot imagine it being removed from a future release.
Just giving it various inputs, OptionQ seems to return true for any Rule or RuleDelayed that has a symbol or string as the left-hand side. It also returns True for any arbitrarily nested list of these.
In[14]:= OptionQ["foo" -> 4]
Out[14]= True
In[15]:= OptionQ[foo -> 4]
Out[15]= True
In[16]:= OptionQ[5 -> "foo"]
Out[16]= False
In[17]:= OptionQ[{foo} -> "foo"]
Out[17]= False
In[18]:= OptionQ[{{{foo -> 4}}, "bar" :> 3}]
Out[18]= True