If you call ads.show() (without caching the ad) there’s no guarantee that the ad will show immediately. It might take several seconds for it to show up, which isn’t acceptable in many cases. That’s why ads.load() exists.
The reason why ads.load() is necessary for interstitials, is because of performance reasons. It will attempt to cache an ad. When you come to a point in your app where you want to display an ad you call ads.isLoaded() to see if an ad is cached. If it returns true call ads.show() otherwise don’t.
The caching will behave the same for both Android and iOS.