Why should I use an empty instead of just animating a model?
I think it is usually done to allow you to later swap the parented model with another one (maybe you start with a low-res then later switch to a hi-res), so that you don't loose the animation keyframes, because they're assigned to the empty, not to the model.

Otherwise, deleting the "old" model, you'll loose all its animation keyframes, and you would need to reconstruct the "new" object animation from scratch.

Maybe there are more or better reasons, but this could be one.