This is a non-local condition i.e. it might depend on the state of other processes. The ability to select a message by source is a powerful feature. For example, a source process might wish to receive messages back from worker processes in strict order.
Tags are another powerful feature.
The point of tags is that the receiver can select which messages it wants to receive, on the basis of the tag. Because of the selection allowed in receive calls, it makes sense to talk of a send matching a receive.