Well, but the expression does refer to an actual array, just not one that has the expression's type. The good question I think you're asking is, when [conv.array] says "the result is a pointer to the first element of the array", what exactly is meant by "the array"?
- the (presumed-to-exist) array referred to by the expression, or
- the (presumed-to-exist) array of the expression's type referred to by the expression?
I think the correct interpretation is #1, because #2 has the absurd implication of not allowing differences in cv-qualification (unless that in itself is a defect...).