These expansions both seem to get values that are inconsistent when
expanded in the various prompt strings.
For example, starting with the following:
PS0='PS0 \! \# _ \n'
PS1='PS1 \! \# $ '
PS2='PS2 \! \# > '
PS4='PS4 \! \# + '
PSV='PSV \! \# V '
set -x
The prompts evaluate like so:
PS1 529 45 $ echo \
PS2 530 45 > ${PSV@P}
PS0 530 46 _
PS4 530 46 + echo PSV 530 46 V
PSV 530 46 V
PS1 530 46 $
i.e. \! is increased as soon as the first line is read, even though
the subsequent line(s) are to become part of the history entry
associated with the number displayed in PS1.