That would be a possibility, too. But in that case, the poison cloud would only go after villagers, but not other pedestrians.
You are right. Might be better to have an (empty) abstract grabPedestrian method in the Grabber class and have each sub-type deal with their own specific behavior. If it is their specific behavior, then it makes sense to have the code in their specific classes.