I was searching and wondering about the same thing you asked, And did not find a reasonable answer even using AI chatbots, So I managed to understand it using my theory, We know that the deployment might manage and create a set of pods for multiple labels
(as your example shows), That's why there is a directive matchlabels
that takes multiple labels, unlike the service which needs only one label
to route traffic to, Because we know that a request will never go to 2 different applications, For example you can't tell the service to rout this get request https://website/products/2
traffic to wordpress
and mysql
at the same time.