You forgot the most obvious reason: a built-in currency is a verifiable thing that can be transacted over the network. If the currency is created and issued by something external to the network, how can individual nodes actually verify that the person spending the currency both a) actually owns it and b) has not previously spent it elsewhere? The only way is to require that the person deposit the currency at a specific institution, but that can't be decentralised.