I didn’t find a way to do it with the gr() backend. You can control the font with, say, legendfontsize=14.0 and there is an option for labelspacing=0.1 (typical values seem to be small), but I’m not sure what labelspacing actually does: it sounds like it might control the horizontal spacing, but I did not notice an effect on your plot. Hopefully someone from Plots.jl can help you with this. Alternatively, introducing a line skip inside the LaTeX string: I also failed to achieve that with the usual suspects: "\\n", "\\\", "\\vspace{2em}"
you added an invisible legend item with scatter! in order not to interfere with the other two histogram calls, right? Clever. This sort of trick is often needed.
I opened an issue because I think it should not be too hard to add a padding option. There is such an option for the plot area itself and the legend is constructed in an analogous way. Unfortunately I don’t know enough about Plots to create a PR, but hopefully it’s a reasonable request.
Huge thanks to @t-bltg, who in response to the issue mentioned above, put together a PR that allows more vertical space inside legends, fixing the OP and allowing more flexibility in general.