My experience is tip is more or less expected in the tourist areas, especially in restaurants, especially if you are an english-speaking foreigner. Most waiters will certainly earn it, but sadly, the level of expected tip is occasionally not correlated to the level of service provided.
I always end up leaving something: pesos outside of tourist areas, US$ at hotels that are not locally owned. In real terms, it isn't much for me, and it tends to cultivate wide smiles.