@MarianoSuárez-Álvarez good question. I myself do not know offhand why it does not work, you might want to ask at main site, there are pattern experts there who would know.
Doing trace I see the problem.
Trace@MatchQ[expr,Or[ Repeated[Equal[_,_]] ]]
gives
{{expr,a[1]==0||a[1]==1||a[1]==2},{Or[(_==_)..],{{_==_,True},True..},True..},MatchQ[a[1]==0||a[1]==1||a[1]==2,True..],False} so it evaluated the pattern to True !
@xzczd opps, yes, I was just about to say that. I just did trace. I expected that was the problem but I was making coeffee. Coeffee is more important :)
Pattern matching for me is like regular expression. Very powerful and important, but very few are really good at it since it can become too complicated very quickly.
to moderators, this user juv95 deleted their question after I spend time and gave them answer. Is this allowed? Below is screen shot. Could this be reopened? If people will delete their questions after getting an answer, I will stop answering any questions as it is just waste of time