Still not sure why the things I was trying from command-line didn't work, but this seems to be getting the job done pretty reliably:

autostart.sh:

(vcgencmd force_audio hdmi 1 >/dev/null 2>&1; sleep 8; mpg123 -Z /home/pi/RetroPie/bgm/*.mp3 >/dev/null 2>&1) & #bgm emulationstation #auto

.bashrc (excerpt):

[[ $(tty) == "/dev/tty1" ]] && (vcgencmd force_audio hdmi 0 >/dev/null 2>&1; pkill mpg123) #bgm # RETROPIE PROFILE START

...this seems to work as intended, even though I couldn't get it to work on command-line for whatever reason. With this setup the audio channel opens in time for the music to begin, and closes again when I quit to console.

In autostart.sh, I put vcgencmd before the sleep command because when I did the other way, sometimes it would open up in time for the music but other times it wouldn't. This way it opens up and "hums" for a few seconds before the music starts, but it always starts from the first instant, so an acceptable compromise.

In .bashrc, the original guide said to put the command inside the RETROPIE PROFILE section but that whole section gets rewritten if you update bashwelcometweak; putting it outside the section preserves it even when the welcome tweak is updated.