There are many ways to skin a cat …
“boot/grub2/x86_64-efi”](https://documentation.suse.com/sles/15-SP1/html/SLES-all/cha-filesystems.html#sec-filesystems-major-btrfs-suse)should be a btrfs subvolume, I don’t clearly see why
grub consists of two parts - binary that is initially loaded by firmware (or by code in MBR/PBR) and modules that are loaded on demand from /boot/grub. The initial binary is installed in platform specific location outside of root filesystem (even if it is physically on the same partition it is not subject to snapshot management). Modules are located under /boot/grub2/x86_64-efi (on UEFI) or in other platform directories of /boot/grub2. Both parts must match otherwise in the best case modules cannot be loaded, in the worst case you get hard to debug incorrect behavior. Both parts are updated when new grub2 version is installed.
If /boot/grub2/x86_64-efi located in root subvolume, it would have been reverted on snapper rollback, but the first stage binary not. So you would have mismatch leading to problems. For this reason those boot time grub2 platform directories are split off into separate subvolumes to be excluded from root snapshot management.
especially that kernel can be updated, so a rollback would leave one with wrong bootloader configuration.
This is managed by snapper which creates grub2 configuration to load grub.cfg that belongs to the correct snapshot. But this handling is disabled if /boot is on separate partition … which is the reason why snapper rollback requires /boot to be part of root subvolume.
Not sure if I can add missing subvolumes now.
Yes, you can. Create subvolumes following general name pattern, copy content of original /boot/grub2/x86_64-efi, edit fstab. You do not even need to go via creating new root subvolume for that. Notice that transactional update server also expects to have @/boot/writable subvolume (which must be mounted on /boot/writable), and for this you need to go via transactional-update again to create mount point.
IDK what transactional-update really does under the hood, but recently it was totally ignoring ext4 “/boot” partition. It has created “/boot/” on btrfs and started to put kernels there on its own.
Correct. As transactional update server depends on btrfs snapshots (in particular, ability to rollback) and this requires /boot on root subvolume as I mentioned earlier, transactional-update never expects /boot to be separate filesystem and does not mount it inside of new root. It is possible that something changed in the way new subvolume is set up, but that is how it works now.
If you installed your system in this configuration originally, this warrants bug report. At least there should be big red warning during installation of transactional server with separate /boot partition.