Actually you can. Vendors who do this require payers to use a built-in functionality in most Bitcoin wallet apps to cryptographically sign a message identifying them.
However this is not very user-friendly, does not work when sending from a hosted wallet (no access to the private keys), and reduces anonymity for the vendor since everybody knows his main payment address.
Comments
"you can't tell who paid for what"
Actually you can. Vendors who do this require payers to use a built-in functionality in most Bitcoin wallet apps to cryptographically sign a message identifying them.
However this is not very user-friendly, does not work when sending from a hosted wallet (no access to the private keys), and reduces anonymity for the vendor since everybody knows his main payment address.