In case anyone else runs into this, a solution is to boot into a live CD, run the commands from above:
then reboot into the system, verify that /boot/grub2/grub.cfg
is still a file (and not a broken symlink), then run:
$ sudo chattr +i /boot/grub2/grub.cfg
After you’ve done this, it should be safe to run rpm-ostree upgrade
again.
This solution is a horrible hack though, so I’ll try and find a way to reproduce this and file it on the IoT issue tracker.