"Buen provecho" is a common polite phrase not only in Mexico, but in all of Central America. It is unfortunate that we don't have its equal in English. I guess the closest thing we have is "Enjoy your meal.", which is still fairly impersonal. As other nodes above state, 'buen provecho' means that you hope the person literally benefits from their meal.

I lived in El Salvador for a year and a half and got used to this and other kind details of Latin social culture. Another example of latino culture's personal touch is how, especially in smaller towns, everyone says, "Buenos Dias!" to everyone else as they pass. As in, if I said "Buenos Dias" to each of three people as I passed them, then each one of them would say it back in reply, which means, when people pass each other, there is a comically unavoidable storm of greetings. To save time, people often shorten the greeting to just, "Buenas!", which is cool, because then you don't have to pay attention to the time of day, whether to say, "Buenos Dias", "Buenas Tardes" or "Buenas Noches, which matters. If you say "buenas dias" after noon, people tend to look at you silly.