Using subnet zero for addressing was discouraged because of the confusion inherent in having a network and a subnet with indistinguishable addresses.
Use of the all-ones subnet for addressing has been discouraged in the past because of the confusion inherent in having a network and a subnet with identical broadcast addresses.