You won't have to reassert the graphics if you use a
graphics.cfg rather than pushing your new entries into
gfx by hand. Since you're just doing a 1:1 replacement in this case you won't run into the same problems as you did with potions.
Anyway, the problem in general with just replacing tables rather than adding to them is that it isn't future-proof (if I add something to the base table in a later version, your code won't have it) and it obliterates anything that the base code automatically adds to the table, for example adding functions to potions after they've been declared, which you also ran into.
In this particular case, it should
probably work, so if it's really going to be a whole lot easier, go ahead and try it... but if you get strange errors related to conditions that's going to be the first thing I blame.
