OnPrepareCanvas is called immediately before a cell is painted, all default canvas settings already have been made, and you have a last chance to modify the canvas. All drawing itself is done by the built-in routines using these last canvas settings.
The handler of OnDrawCell, on the other hand, allows you to completely draw a cell by yourself. Since this can be quite complex and users typically only want to change some visual aspects of the cell (background or text color, font style) I usually give preference to OnPrepareCanvas.