I will give you an example with Solidity Smart Contracts:
When using elements that are smaller than 32 bytes, your contract’s gas usage may be increased. This is because the EVM operates on 32 bytes at a time. Therefore, if the elements are smaller than that, the EVM must use more operations in order to reduce the size from 32 bytes to the desired size.
It is only beneficial to use reduced-size arguments if you are dealing with storage values – the compiler will pack multiple elements into one storage slot, and thus, combine multiple reads or writes into a single operation.
Logic here is simple.
There is no benefit in doing this with function arguments or memory values – the compiler does not pack these values.
In order to allow the EVM to optimize this, ensure that you try to order your storage variables and struct members such that they can be packed tightly.
For example, you can declare storage variables in the order of uint128, uint128, uint256 instead of uint128, uint256, uint128. The former will only take up two slots of storage whereas the latter will take up three. When you have a lot of code, this doesn’t really matter a lot.
So why do some developers ask for more than others? Because they know these small details.
Details that save you money in the long run.