Normally, the way that late loading adds cause reflow / layout shift / jumpiness is that you don't know what size an ad slot is going to be until after the auction. You could run an auction just for a single size, but you'd have fewer bidders and make less money, so publishers generally choose to offer a bunch of sizes. On a regular page, this looks like an ad coming in and shifting all the other content on the page.
AMP had several design goals, one of which was that it should be impossible to create pages with certain types of bad user experience, including reflow. An AMP page requires that every element on the page be sized only by information directly visible in the HTML (including inline CSS, but no inline JS) which allows the browser to lay the whole page out immediately. When an ad loads off screen there can be a request to the AMP runtime to resize the slot, but the runtime will reject the request if the resize might cause user visible effects.
Not anymore. Many ad networks have rolled out their 'CLS' solutions for the upcoming Google Web Vitals algo change, and ads don't jump about anymore on these networks.
Example ad networks that work well with delayed ads (that don't jump) include Mediavine and AdThrive.
I wanted to like pihole so much and ran one in my home for a while. Unfortunately I had to move back to per-device adblockers.
I had multiple instances of sites just not working because of the pihole was blocking something. This would result in me putting it in non-block mode for a little bit, rinse and repeat. I can't have that kind of hassle when non-technical people use the internet too. At least with per-device adblockers it's a single click to disable/enable the adblocker if a site is acting funny.
Basically, it wasn't any faster than just blocking ads on the device itself & added another thing on the network for me to manage.
Right, but what Google did was to slow down only the non-AMP ads. If the goal was to build a better user experience, they should have slowed ALL the ads.