This is dependent on how the message is addressed. If it is to a full jid, then it should work as expected. If it is addressed to the base JID (which is most likely what you are seeing), it’s behaviour can vary. The server will either choose the priority client and deliver it to that one, or it will deliver it to all of them. You seem to be seeing the first case.
The server will determine priority based on its own algorithm (I believe). Depending on your server, it can also be configured to deliver to all clients instead of just one, as both methods are considered acceptable by the spec.
OpenFire has such a property, and the Google Talk server does it by default.