Not everyone plays on their phone -- that fact right there opens up even more possibilities as to why your opponent might not be moving.
Maybe their doorbell rang and they had to deal with whoever it was for a few minutes..
Maybe their boss came into their office and they had to quickly jump to another window.
Maybe the undercooked tacos they ate a few hours earlier suddenly caused them to have to literally run to the toilet in order to save their underwear and pants from being destroyed.
Or maybe it was one of the reasons you mentioned -- i'm sure plenty of people let the clock run out of spite, or in hopes of you being too impatient to wait it out, etc.
Who knows? Who cares? No biggie.
And for what it's worth, apparently Chess.com does keep track of this sort of thing, and will take action if a player seems to time-out over long stretches too often.
Yet their inactivity doesn't result in the Auto-Abort pop-up showing up, which usually happens when they've closed their phone or exited out of the app. So if they're inactive for minutes upon minutes, yet the auto-abort timer doesn't appear, does that mean that they're deliberately staying on the game, touching their screens so their phones don't sleep [aka resulting auto-abort mode], just so they can force their opponent to sit there and wait? Why do they do this? To annoy the opponent? To hope their opponent becomes impatient and exits out of the game before they do, thus resulting in a win? Sometimes I feel like it happens so much, and I think it's just normal courtesy to not have to make your opponent sit there, inactive, for a long period of time when you already have the intention to give up anyway. Has anyone else ever been through this?