"So much food..." refers to a specific collection of food - the food in front of you, the food you or someone else just ate, etc. "So" here behaves like a demonstrative pronoun (that, those, this), though it may or may not technically be considered one. The sentence implies that the amount of food you are referring to is too much and hence not good.
"Too much food..." does not carry this specific implication; it is a more general statement that doesn't refer to a particular collection of food or current situation. You are simply making the general observation applicable to all: too much food isn't good. You could say this in the above examples I gave (the food in front of you, the food you or someone else just ate), but you wouldn't necessarily be implying that there is actually too much present or that someone necessarily ate too much. (If you were, it might sound rather passive-aggressive.)
So, in this context... "Tanta comida no es buena." Is kind of like saying, "Tanta comida es demasiado."
Please correct me if I'm wrong.
What I'm understanding is:
Mucho/a=a lot (can be good or bad) The person you love says, "Te quiero mucho."=good "Te odio mucho."=bad
The opposite would be, Poco/a="Te quiero poco."
Tanto/a=so much (a lot but not necessarily too much/excessive, can be good or bad) You're lost and starving, then rescued. They give you a huge buffet. You might say, "¡Tanta comida es buena!"
Or, you go to your parent's home and your mom makes a lot of food for you when you're on a diet. You might say, "Tanta comida no es buena."
The opposite would be, Tan poco/a="Tan poca comida es..."
Demasiado/a=too much (excessive, bad/harmful)
Duo tends to blur the lines between the nuance of mucho and tanto, sometimes using either for "many/a lot/much". I tend to think of it on a spectrum of mucho-tanto-demasiado = "a lot-a whole lot-too much".
For instance, I recall an exercise where Duo used muchas estrellas in translating "there are many stars in the sky". I'd be inclined to use "tantas estrellas* to indicate that it is a large number of many.
tanto can almost be demasiado without quite getting there - or politely refusing to say that something is too much directly, but saying it indirectly, as here.
"no good" means that the food is spoiled or rotten - it has nothing to do with the quantity of food itself not being good, which is what the sentence purports to mean.
But I'm not sure that that is not what the sentence can mean, as in "So much food doesn't meet minimum health-code standards and is not good for that reason."