Well, the activation of a group currently acts like a big 'if' statement. The activation state of the group is only checked at the top of the group, and if it is activated, all its events get run. Consider the event:
+ Global variable 'Myvar' = 0
> Action 1
> Set 'Myvar' to 1
> Action 2
Even though the action 'Set 'Myvar' to 1' makes the condition of the event false, this does not cancel the running of the event; Action 2 is still run even though the event is no longer true. It's simply because the conditions are checked once only, and all actions are run when that check is true.
The logic is the same with groups, and I'm not convinced it should be changed, since this behavior exists in other places in Construct. You could work around it by adding 'Group is activated' conditions to the subsequent events after a deactivate.