I agree with both of what you're saying, I think

It's very complicated and I think there are many things at play though.
The left (Labour and greens) were up 0.4m since 2019 though, so they mostly voted somewhere, if it was the same voters (might not have been). Labour votes went in labour seats and Lib dem votes went into lib dem seats though, rather than being spread around, quite a lot of that was tactical voting, and some not voting I think. I don't think many of those seats went tory or reform, as labour/ LD clubbed in enough to make it not happen. Obviously a lot of that was the right didn't turn out and fought each other also.
It's not just Labours 412 seats though, the LD's got ~72 too, their most I've seen I think. It was very efficient for both, 484 in total, some going.
Loads on the labour left might not have been happy with labour, but might have just not voted as it was in the bag anyway? They're possibly more likely to not vote than the more central Labour or swing voters etc? There seem to be a quite a few more central voters or starmer supporters on here who still voted labour and most I know did and were very vocal on that. The only ones I know which didn't were those further left etc, but they're were all vocal in that too and saying Labour were going to win anyway etc. They didn't really appear to fear a loss, to reform or Tories.
The right (con and reform) lost 3.7m votes from 2019, and similar to 15 and 17 etc, it's like the right have given up, but the rest haven't, to me. Maybe some of them have died off too or just got to the point where they can no longer be arsed voting?
By voting for a party you're also pretty much voting against other parties, maybe as many tories were not as scared by Starmer as they were Corbyn etc? The Right love to vote when they're annoyed and riled up etc, and the press made sure Corbyn riled them up.
Looking back, 2017 to me looks like an outlier for Labours numbers, looks like a brexit vote split as the brexit vote itself was though, loads voted Labour then in hope as an anti-brexit vote, but by 2019 basically had given up or had enough of Brexit talk or lost faith in Corbyn.
View attachment 78949