My random observation tells that sadly most "modern" highly complex websites do it wrong and it can hardly be any worse (this applies to all web products I've been working on for last several years):
1) analytics beacons fired every N seconds (which means the network stack on mobile never goes to idle mode)
2) JS frameworks doing event delegation that capture mousemove events and various other stuff like that + various setTimeout/setInterval (perhaps from third-party code).
If you want a sample of 2) just open devtools > debugger on any page and click "pause". You will immediately hit a debugger in some just-now executing JS callback even if you do nothing at all on the page.