I'd like to notate 'gradient of L with respect to a_f' which I can do with \nabla_{\mathbf{a}_f} \mathcal{L} and it looks like this:

Look at all that space between the nabla and the L! Is there a way to get the a 'under' the nabla a little more without having to shrink its size too much? How would people suggest I make this look a little better?

It's better if you use a more semantic command, with the advantage that you can define it to do what you precisely want.

The approach here is to add a thin negative space to the subscript, if present, but without changing the input. I use the same trick as for the standard differential, so a thin space will precede the nabla when necessary, without user intervention.

\documentclass{article}
\usepackage{amsmath}
\usepackage{xparse}

\mathop{}\!% \mathop for good spacing before \nabla
\nabla
\IfValueT{#1}{_{\!#1}}% tuck in the subscript
\IfValueT{#2}{^{#2}}% possible superscript
}

\begin{document}

$\grad_{\mathbf{a}}\mathcal{L}$

$\grad_{a}\mathcal{L}$

$\grad_{\mathbf{T}}^2\mathcal{L}$

$3\grad_{\mathbf{T}}^2\mathcal{L}$

\end{document}


Here's the picture of what you get from the previous input by just changing \!#1 into \mspace{-4mu}#1 (\! is the same as \mspace{-3mu}).