nameref variables considered buggy

Assignment to a subscripted array variable behaves differently for
nameref vs `printf -v`, as shown below.

Assignment via nameref variable:

    declare -a arr=()
    func() {
      local -n ref=$1
      ref='nameref'
    }
    func 'arr[0]'
    declare -p 'arr[0]' arr

    --- output ---
    declare -- arr[0]="nameref"
    declare -a arr='()'

Assignment via `printf -v`:

    declare -a arr=()
    func() {
      printf -v "$1" 'printf -v'
    }
    func 'arr[0]'
    declare -p 'arr[0]' arr

    --- output ---
    ap.sh: line 6: declare: arr[0]: not found
    declare -a arr='([0]="printf -v")'

For reference, the "normal" behavior:

    declare -a arr=()
    arr[0]='normal'
    declare -p 'arr[0]' arr

    --- output ---
    no.sh: line 3: declare: arr[0]: not found
    declare -a arr='([0]="normal")'

The above suggests it's the `printf -v` behavior is correct, while the
nameref assignment isn't. Likely a bash bug.