OnPrepareCanvas is fired just before OnDrawCell(grids.pas-->line 9838).
If you use custom drawing, you don't need OnPrepareCanvas(basically it's useless), as you said you can do all the canvas stuff in the OnDrawCell. On default draw instead, just before OnPrepareCanvas is called, a lot of things are going on, like painting the selected raw, setting canvas font, etc...(for more details see line 3562).