When you change an item in an ImageCanvas, it redraws the whole screen, just like when you change something on an roScreen. The only difference is the redraw is done by the firmware in the case of the ImageCanvas, whereas it's done in your Brightscript code in the case of roScreen. So although the Brightscript code looks simpler, the actual work being done is approximately the same. roScreen gives you more direct control over what's being drawn and the timing of the changes.
roScreen uses the 2D API and depending on the device may have access to OpenGL. It can also be double buffered for top performance. The imagecanvas is a much higher level component with a simple interface. [...] finally, imagecanvas is just that- a canvas designed for images and not optimized for animation. The 2d is designed for animation- a menu is an animation