One of the reasons technical people use ad-blockers is because they don't want to download 10 MB of crap for a 300-word page. "The customer hasn't downloaded our crap" should be trivially detectable.
The people displaying the content (the site) and the people providing the "crap" (the ad company) are often different entities, with different servers. This is why ads are often served with javascript. Since the scripts that load the ads can change, as they are deployed by the ad company, there's not always a definitive way to know what you can expect to exist. Additionally, since there are exchanges and aggregators, you can't always be sure the same ad company is providing the script. This could be normalized, but anything that makes it easy to detect that the ad has been loaded form the page is probably also easy to detect from the ad-blocker, and trace back to something that needs to be removed.