Why is there a need to specify uint8 or uint256, why isn't uint enough? isn't this all about optimizing gas costs, and I assume the solidity optimizer will do this.
Unfortunately, you are responsible for best optimizing your code so it uses the corresponding size according to your needs.
One thing to note is uint (or int) is just an alias for uint256 / int256.
It's your own decision whether to use uint8 or uint256 (or whatever size) depending how big or small you expect the number in question to be.
You could use the biggest possible size and later on start optimizing your code accordingly.