For what it's worth, I think having array_length('{}'::integer[], 1) = 0 is far more sensible, and making differently-dimensioned empty arrays compare equal (as mentioned previously[1]) is quite confusing.
I'm not saying this isn't a bug, but you might want to start using the cardinality() function for comparisons like this.