The idea is to not change a file being modified without the explicit user's authorization: that is the "mindset": no unwanted "surprise".
Changing branch doesn't change by default modified files.
It actually blocks the checkout if those modified files would be overwritten during said checkout: it is up to the user to decide if those changes stay or go.
"In practical": you don't want a tool do do anything "for you". You want to use the tool the way you intent.
If you intent to clean untracked files:
The tool alone cannot decide what should be done with those untracked/modified files when switching branch.