The zero-acount 0x0 is used by some smart contracts to store tokens
No it isn't :-)
It is used by smart contracts because there are inputs and outputs of tokens from it.
There aren't any real outgoing transactions from this address, because that would imply that someone has found the private key equating to the address, which would cause problems because...
So why this particular address ?
...this particular address is used as a burn address1. The assumption is that no one holds the private key to this address. (There is as much chance of finding the private key to address 0x0 as there is any other address.) Therefore it can be used as a place to send tokens and ETH if you don't want them to be used again. There are various reasons for wanting to do this.
What you're actually seeing is explained in a previous post: Why Transfer(0x0, _to, _amount) after Minting Tokens
The outgoing transactions are transfer events which are generated when new tokens are "minted" inside an ERC-20 contract. The "from" address is essentially a placeholder, and 0x0 was chosen for it. It's confusing because then these events show up in EtherScan's accounting records for 0x0.
1It's also an address that gets used mistakenly, causing people to lose their funds.