To get rid of the gray background, use ttheme_minimal() when creating the table (which also allows you to set the font size) and use grid.draw instead of plot when rendering it. To left justify the table, I've added a null grob as a spacer on the right to push the table to the left (there's probably a better way):
g <- tableGrob(FigLegend1, rows = NULL, cols = NULL,
theme=ttheme_minimal(core=list(fg_params=list(fontsize=12))))
b <- arrangeGrob(p,
arrangeGrob(g, nullGrob(), widths=c(1,1)),
nrow = 2, heights = unit(c(2, .25),c("null", "null")))
grid.newpage()
grid.draw(b)

As I was working on this, I realized that you don't need tableGrob if all you want is some text. If you want to add a separate grob with just text (as opposed to using the caption feature of ggplot as described in my earlier answer), you can use textGrob from the grid package. With textGrob you can also get exact horizontal positioning of the text relative to the plot:
FigLeg = textGrob("Figure S1: This is the Figure Legend",
x = 0.01,
just="left",
gp=gpar(fontsize=12))
b <- arrangeGrob(p, FigLeg,
nrow = 2, heights = unit(c(2, .25),c("null", "null")))
grid.newpage()
grid.draw(b)
