Hey,
Once the widget loads it caches the current map layer state (ids, urls, indexes) then attaches to layer add / remove and zoom start on the map.
It's got a config that runs off map labels so for a given label it has a scale cut off and a url to a dynamic service (you used to be able to call new ArcGISDynamicLayer against a tiled service at 10 and earlier but not 10.1). when we hit the cutoff scale it swaps out the cached service for a dynamic one. Since they have the same label / id whatever the Viewer framework doesn't care, and flipping to another basemap and back is fine. When we start zooming out we pull out the dynamic and replace with cached in same spot. The customer has really high quality imagery and they can make out their features at big scales, scales which would be inconvenient to cache to.
So will flip it over and the user never sees it happen.
Cheers,
Fraser