The basics of what type of variable you declare depends can upon several things
1) You misunderstand the requirements.
2) you are sloppy.
3)architecture coupled with the above.
It used to be that people tried to keep their code small, with todays cpu's and resources, people have become very sloppy. But there are a couple of places (probally more) that I know which forces me to declare small variable types.
1) Where the output of the variable, results in and excessive amount of data to capture and store.
2) Using micro controllers. These usually have limited on board space. I would imagine in an environment such as these, with access to the best, they would still be constrained.
And there could be many other reasons.