It makes sense for these hints because if a table appears several times in a query you’d expect the optimizer to insist that the statistics on that table (and its indexes and columns) were consistent for the whole query.
(You can also see in v$sql_hints that they’re statement-level hints, so you couldn’t make them vary for different query blocks – and in fact the hints would be ignored if you included the @query_block part that can be used in so many other hints.)
Jonathan Lewis added this comment on my blog post about regarding Finding Wrong Hints:
The following hints are only part of the ALL_HINTS hash set:
As a result they should be checked only for violations of G-9601: Never use unknown hints only.
The check regarding G-9602/G-9603 is done only for some chosen hints (via checkTabspec call):
However, it would make sense to define some test cases for TABLE_STATS, INDEX_STATS and COLUMN_STATS hints.