No, xargs -0 -I'file' mv file ${file%.mp3}.txtit will not work, because the variable filewill be expanded by the xargs program, and not by the shell. Actually, it is not entirely correct to refer to it as a variable; it is called "replace-str" in the xargs manual.
. xargs bash ( sed ), , , xargs bash, , :
find -name '*.mp3' -print0 | xargs -0 bash -c \
'while [ -n "$1" ]; do mv "$1" "${1%.mp3}.txt" ; shift; done;' "bash"