WetGeek Interesting. The VM is executing the same code, with the same instructions in the same order, but doing something different. How does the code know that it's being run on a VM? Just chalking it up to magic for now. Sorry for the bother.
Gnome Boxes runs into the same issue. I think the issue arises because the ISO is mounted but doesn't unmount during VM reboot, as removing a Live USB does in a bare metal install/reboot, so the reboot process doesn't flush/complete properly**. My workaround on Gnome Boxes has been to do the installation (which is screwed up as often as not), and then clone the installation (Gnome Boxes has a tool for cloning), open the clone and remove the original installation, which seems to work somehow. I don't know why -- magic, maybe?
I haven't used Virtual Box in years, but when I did, I often used pre-built, pre-tested VDI files from OSBoxes. A lot simpler than rolling your own, and avoids the reboot issue. The VDI collection isn't comprehensive, but it works when available.
** You've probably noticed, as I have, that on bare metal, a "removing live files" process takes place after the installation USB is removed during the reboot pause. I don't think that happens if the ISO remains mounted.