Yeah, so basically, the difference is “only” functional vs. side-effects.
For optimizers, you need to have .backward as .grad is what they consume.
But for other purposes it would seem that autograd.grad makes is clear that the result is yours.
Probably a very careful reading of the documentation (the Autograd Mechanics note and torch.autograd come to mind).
Best regards
Thomas