I couldn't find any mention of this issue and I kept fucking around with it for an hour.
Disclaimer: I am dumb.
Symptoms
After reaching end of track on its own, playback won't continue. The UI remains responsive, but with no effect.
Dragging slider all the way to the end of a song behaves as expected, without issues.
Running VLC with -v 3 provides no additional information.
Closing VLC GUI will not stop VLC, neither does signal 15 (sigterm), only 9 (sigkill).
After downgrading VLC (and associated vlc-* packages), the issue persists.
Solution
Switch away from pipewire ALSA audio device or away from ALSA altogether (recommended).
Switching ALSA to different device
GUI
The drop-down "Audio" menu doesn't appear to persist settings.
Instead, navigate to Tools -> Preferences, in bottom left corner under "Show settings" select "All", then on the left, under "Audio" expand "Output modules", select "ALSA" and finally change "Audio output device" to something else than "PipeWire Sound Server" (e.g.: "Default") and click "Save" in the bottom right.
Config file
The file lives in ~/.config/vlc/vlcrc.
Search for alsa-audio-device=pipewire, and change pipewire to something else.
Example:
# Audio output device (string)
alsa-audio-device=default
Switching from ALSA to PulseAudio
Or at least the option says PulseAudio, this is probably pipewire-pulse since I don't use PulseAudio.
Anyway, this will also show VLC in list of playback applications, as well as allow for multiple audio sources to output at once (rather than exclusive access to audio device).
Basically same as using PipeWire ALSA "device".
GUI
Navigate to Tools -> Preferences, in bottom left corner under "Show settings" select "All", then on the left select "Output modules", and change "Audio output module" to "Pulseaudio audio output" and click "Save" in the bottom right.
Then restart VLC.
Config file
The file lives in ~/.config/vlc/vlcrc.
Search for aout=alsa, and change alsa to pulse.
Example:
# Audio output module (string)
aout=pulse