You don't need to, you're right. I did it for two reasons:
* When I started with `ros_control`, the existing codebase already did this, so for consistency I followed suit.

* There's actually an added benefit if you specify headers: certain IDEs like QtCreator and MS's Visual Studio don't show headers as part of the project unless you state them explicitly as belonging to a target. I've always wondered why these IDE's don't just parse the generated CMake artifacts, which do contain the depended-on headers.