Sometimes you have things to do with high estimates (many days) that can't be reasonably split into smaller pieces (the "you don't know what you don't know, and what exactly has to be done" situation). But still, it doesn't look good to put a too highly estimated task in the sprint, so you instead split it into fake "Do X, part 1" and "Do X, part 2", which is basically creative accounting to satisfy the tooling.
In that situation, the Scrum theory says to create a "spike" to figure out what to do, and then create the proper stories, but if often doesn't work this way in real life (in particular, if you need to discover and then deliver ASAP, this doesn't help at all; also often you're in "continuous discovery" mode, i.e. you do stuff, discover what else is needed, and so on, until you're done).
Edit:
A solution to overpromising is to create "bonus" tasks that are kept in the backlog and not put in the sprint, but this lowers the incentive to take them since they're not formally in the sprint (and also who's taking big out-of-sprint items while there's unfinished small stuff in the sprint?)
Adding all the unpredictable things happening during the sprint, basically the sprints are creating more problems than they're solving.
The only good things about them are:
- SLAs for other teams for higher level planning
- a way of saying "no" to incoming requests ("sprint content full, sorry")