This is not a bug. This is how it works at the moment. selecting an deselecting are two steps. If you dont want to keep selected items, than they are first cleared before selecting new ones. The beforeselect event gets fired for each model you are going to select.
We cannot change this in any GXT 2.X release as it would be a braking change.
We could add a BeforeDeselect and Deselect event, but the time left to the 2.2 release is probably too short.