Throwing when trying to burn 0 tokens is an unnecessary special case. If another contract wants to burn() a variable amount, it should not be forced to deal with this special case of burning 0.