The event only provides +1 food as far as I know. In my current game, I happen to have a city on grassland with +1 food from a volcano event. The food yield in the city tile is 3, as one would expect, but if I change the terrain to desert in WorldBuilder, the food yield remains 3. Looking at the source code, CvPlot::calculateYield does this:
Code:
if(bCity) iYield = std::max(iYield, GC.getYieldInfo(eYield).getMinCity());
iYield += GC.getGameINLINE().getPlotExtraYield(m_iX, m_iY, eYield);
That is, the yields are first raised to 2/1/1 and then the extra yield from random events is added. This may well be intentional, though I do find it counterintuitive.