In bash, like in ksh, where $var is an array, $var is actually short for ${var[0]}.
So in:
var=([1]=whatever [2]=blah)
${var+set} would not expand to set, and [[ -v var ]] would return false, because $var has no element of indice 0 (note that in bash, like in ksh, but contrary to most other shells and languages, arrays are sparse arrays, or associative arrays with keys limited to positive integers).
In bash (at least since 4.3), when you declare a variable as array with:
typeset -a var
var is initially unset. It's not even set to an empty list. In 4.3, typeset -p var would return an error. In 4.2 and before it would output:
declare -a a='()'
(as if declaring the array assigned an empty list like it does in zsh)
In 4.4, it outputs:
declare -a var
So, since 4.3, an unset (but declared) array is different from an array that is assigned an empty list.
Still, it's difficult programmatically to differentiate between both. But in practice, the distinction is not very useful. Most likely, what you want to know is how many elements are in the array:
((${#array[@]})) || echo array has no element
See zsh, rc, fish and yash for shells with better array designs.