There is no difference between stealing food and eating food and not paying for it. The second is a subset of the first.
There are definitely terms for the act of eating at a restaurant and leaving without paying—chew and screw, dine and dash, or eat and run, for example—but I can't think of any that specifically refer to the perpetrator.
Mooch is a good start, but does not imply the illegality (since typically a mooch asks for what they don't pay for). Perhaps freeloader, parasite, or sponge, but again none of those have the implication of theft. Con artist captures the "trick" aspect of the theft, but has connotations of a hustler who convinces their victim to do something they would not ordinarily do (and waiters are always serving food).
So moving on to words describing theft: filcher might work and swindler seems apt, but neither is specific to this act.
This might be the time to make up a term: perhaps pie-jacker or sandwichbagger? ;)