For example, in the ERC20.sol, the string name of the token could be set as a constant to reduce contract's gas. Or the name function could returns "token name" instead of the string variable.
It's a trade off to make the contract more easily usable. Passing in the token name as a constructor parameter is the best way. It can't be a constant variable in that case.