I think the answer depends on your applications. In another word: "who needs what?".
For example, in navigation stack (other stacks may differ):
- AMCL node uses tf for localization because it needs to match laser scans to the static map. It would be a pain to use odom topic in this case.
- Some of the motion planners in move_base needs both tf and odom for planning because they also consider the velocity data from odom.
Personally, I would think tf is a bit more complicated to use but it provides many other benefits (like timeout from last know transform, easily transforming a point from 1 frame to another, etc.), but it still depends on your applications. If you feel that odom data is good enough then there is no need to publish tf.