UPDATE
That question is by the essence an exact duplicate of this one. The explanation given by Mr.Wizard means that the pattern-matcher is NOT capable to handle situations when an unevaluated function with Orderless attribute is wrapped by Hold. So this is indeed a gedanken functionality.
The pattern-matcher works on the base of the assumption that Orderless attribute is already applied and the arguments are sorted in the canonical order:
ClearAll[o]
SetAttributes[o, Orderless]
MatchQ[Hold[o[y, x, a]], Hold[o[_, x, a]]]
MatchQ[Hold[Evaluate@o[y, x, a]], Hold[o[_, x, a]]]
False
True
In the light of this the Documentation statement
In matching patterns with Orderless functions, all possible orders of
arguments are tried.
means that actually only all possible positions of the Blanks in the pattern are tried but other arguments in the pattern are preliminarily sorted in the fixed canonical order. This is evident from the following:
MatchQ[Hold[o[y, a, x]], Hold[o[_, x, a]]]
MatchQ[Hold[o[y, x, a]], Hold[o[_, x, a]]]
MatchQ[Hold[o[y, a, x]], Hold[o[x, _, a]]]
MatchQ[Hold[o[y, a, x]], Hold[o[x, a, _]]]
True
False
True
True
In the other words, Hold prevents applying Orderless attribute in the sense that it prevents sorting of the arguments in the canonical order, but it does not prevent action of this attribute in the pattern (i.e. all possible positions of the Blanks are indeed tried).
Original answer
This behavior is definitely comes from the Orderless attribute of Plus and reproduces for arbitrary function having this attribute. As can be seen from the following, without Hold the pattern matches regardless of the order of the arguments due to Orderless attribute of o:
ClearAll[o]
SetAttributes[o, Orderless]
MatchQ[o[y, x, a], o[_, x, a]]
MatchQ[o[y, a, x], o[_, a, x]]
MatchQ[o[y, x, a], o[_, a, x]]
True
True
True
But when we wrap the expressions by Hold something breaks - now it does not match even when the order of the arguments is identical:
MatchQ[Hold[o[y, x, a]], Hold[o[_, x, a]]]
False
Surprisingly, it does match if we reorder arguments in the both expressions:
MatchQ[Hold[o[y, a, x]], Hold[o[_, a, x]]]
True
I suspect that we have a bug in the pattern matcher because this behavior cannot be explained by the documented meaning of the Orderless attribute.