I've never ever found a reason to use the DoCmd.RunSQL.
The difference would be that the DoCmd object is part of the GUI, and
therefore uses the expression evaluator, so that you can insert inot the
SQL references to form controls, VBA routines, and so on. But then again,
there are nearly always better ways of doing the same so I still don't
use it.
As Douglas says, the availability of the dbFailOnError argument is
another biggie.