There are many reasons behind it.I would say some we already know like the MFA sites or low paying advertisers.While there is another thing we are missing that is the Interest Based Advertising of google.Many times when you are searching for a specific word such as for example think about "mobile wallpaper" it is a low paying keyword i think so ,so just after it when you open another website which is related to health and if that site have ads for google then it will show you the wallpaper related ads and when you click on those ads it will provide low payments to health site.And Vice versa for the high paying keywords. You can opt out of Interest based advertising but remind you it will hurt your earnings as competition will decrease on your website.
Scratched all I posted . . . I think the change in the actual ads is a move by Google. I remember looking up a domain I bought named "Kigli.com". Good search displayed the "Did you mean 'Kigali'?" Sure enough, the next adsense unit I saw had something related to buying tickets to travel to Kigali.
i didn't copied any ones idea .I have experienced it my self when i was getting stock related ads on my seo blog not even one ad was related to seo. But the thing is that i had opened my websites directly by placing url in address bar so might be google not got data to show the relevant ads according to it,but when i refreshed page it showed relevant ads.