You Don't Have To Use ANOVA
If your sole objective is confirmation, using pairwise $t$-tests with appropriate multiple testing correction is not wrong. However, there are several reasons why it is preferable to use a model generally speaking, such as ANOVA.
A Model is More Informative
Performing multiple comparisons does not tell you how well these categorical variables explain the variation in the response variable. Nor does it allow you to assess potential interactions, as you pointed out yourself. A $t$-test is just that: a test. Its use is confirmation, while a model can also be used for further inference or prediction (not saying ANOVA is particularly suited for prediction). There is substantial criticism on the overuse of null-hypothesis significance testing. Not every research question is answered by a $p$-value or a confidence interval that doesn't include zero, nor should it be. Again, tests are only for confirmation.
A Model is Easier to Diagnose
Performing diagnostics on each of the individual comparisons is both cumbersome and more prone to false positives for e.g. violation of normality. Having a single ANOVA model allows you to instead inspect one set of residuals to assess the validity of the entire model.
Multiple Comparisons Need to be Corrected For
If you are unfamiliar with multiple testing issues, see this xkcd for example.
In my opinion, the most important reason to refrain from using pairwise $t$-tests is that individual comparison's from Tukey's HSD are corrected for multiple testing by default. A newcomer to statistics trying to perform pairwise $t$-tests might end up simply making multiple calls to t.test()
without regard for the inflated false positive rate from performing multiple hypothesis tests.
Sometimes T-Tests are Preferred
Say you are only interested in a subset of all possible comparisons. In this case, Tukey's HSD would be a huge waste of power, because a correction will be applied for many tests that didn't interest you in the first place.
Then Again, Some of Those Times Models are Preferred
In the special case where you are comparing everything to a control group, you might also want to make use of lm()
instead of aov()
, with the control group in the intercept. This has both the advantage of preserving power and the advantages of using a model instead of a test.