Displaying cached ads is definitely the best user experience, so I'd recommend doing it every time!
If you look down to the - (void)didDismissInterstitial:(NSString *)location
method in the example project, you'll see that they're caching again.
This delegate method is fired every time an interstitial is clicked or closed, so adding cacheInterstitial:location
here will immediately recache an interstitial for the location every single time!
Don't forget to add cb.delegate = self;
after initializing the cb object to ensure that the delegate methods work properly.
Full Disclosure: I work for Chartboost.