What can I do with the "3" value it returned? Certainly not use it as an offset to get a slice of the original array. The only thing that seems sensible to me here is to reject the whole thing with an error, that is, only accept 1-D arrays here. We can later extend the function by allowing higher dimensionality as long as the second argument is an array one dimension less than the first argument. But if we allow the case on its appearance, it's going to be difficult to change the behavior later.
I designed this possibility (use ND arrays) mainly for info, if some value exists or not.
Why not use =ANY() for that?
It is only partial solution - array_offset use "IS NOT DISTINCT FROM" operator.
I am thinking, so this behave is correct (there is no other possible), but it is only corner case for this functionality - and if you are thinking, so better to disallow it, I am not against. My main focus is 1ND array.
A nonsensical answer for multi-dimensional arrays is worse than no answer at all. I think raising an exception is better.