On a dotcom site that uses Ad Code Manager, we’re seeing Google try to crawl ?preview= URLs (I have CSV reports from the site owner of the URLs that Google is failing to access). Not super sure how Google is finding those, but @danielbachhuber suggested it might be something like when an author is previewing a post, this triggers AdSense, AdSense reports back to Google the URL the code was triggered on, and Google tries to call it, and it errors.
If this sounds plausible, I’d like to suggest that adsense is disabled (i.e. not output) when is_preview() === true. ?
googletag.pubads().set(“page_url”, “URL”); is another option, but as page slugs/URLs may change during successive previews, invalid URLs might still occur.