"She" would translate to "ze" only as the subject of the sentence, as object it is always "haar". Here in this sentence "ze" is used as an object, so it has to be "them". Your suggestion "he has eaten her" would be "hij heeft haar gegeten". [Flemish speakers may often use "ze" for "her" in object form, but this is not correct in The Netherlands.]
It's because hun is used as an Indirect Object, while hen is used as a Direct Object or after a preposition. Both hun and hen are used when referring to people.
For more information, please follow the following links: