When the set of labels is changed for a configured slave in the EC2 plugin's global config (under "Configure Jenkins"), it forgets about existing nodes and launches new ones.
It should instead relabel existing nodes with the new labels on first launch. Or at least terminate the old nodes. As it is, you land up with a bunch of duplicate nodes.
Observed with idle timeout enabled, and stop on idle enabled, with nodes idled down at the time of configuration change.