What I have found out about this problem:
The Bananapi R2 needs the SD card to have special headers in the first 2k of space, after that comes a preloader which is then in turn loading u-boot. Those headers and the preloader are distributed as binary blobs (found in build/packages/blobs/mt7623n/BPI-R2-preloader-2k.img of the build tool).
As it turns out, the blob of the preloader is a bit older, which had a restriction on the size of the "u-boot.bin" it could load. There has been a newer release which increases the allowed max size of "u-boot.bin" that is loaded (http://forum.banana-pi.org/t/which-preloader-image-to-use/4602/24). So what happened is probably following: over time u-boot got more and more features and as such the u-boot-binary grew larger, so much so that at some point it was too large for the preloader. It can be fixed by upgrading the binary blob for the preloader to this one: https://github.com/BPI-SINOVOIP/BPI-files/blob/master/SD/100MB/BPI-R2-preloader-DDR1600-20191024-2k.img.gz
(as outlined in the forum post linked above).
Steps to fix the build process:
1) Download and unpack https://github.com/BPI-SINOVOIP/BPI-files/blob/master/SD/100MB/BPI-R2-preloader-DDR1600-20191024-2k.img.gz
2) Rename to "BPI-R2-preloader-2k.img"
3) Move to "build/packages/blobs/mt7623n/BPI-R2-preloader-2k.img" (replace the old one by doing so)
Steps to fix the provided images from https://dl.armbian.com/bananapir2/archive/
1) Download and unpack https://github.com/BPI-SINOVOIP/BPI-files/blob/master/SD/100MB/BPI-R2-preloader-DDR1600-20191024-2k.img.gz
2) Rename to "BPI-R2-preloader-2k.img"
3) Be careful with the `dd` command:
4) Patch the images by writing the new bootloader into the images using
dd if=BPI-R2-preloader-2k.img of=<PATH/TO/ARMBIAN.img> bs=1k seek=2 status=progress conv=notrunc
So for example it looks like this:
dd if=BPI-R2-preloader-2k.img of=Armbian_19.11.3_Bananapir2_bionic_legacy_4.19.85_minimal.img bs=1k seek=2 status=progress conv=notrunc
The command skips the first 2k of the armbian.img (given by seek=2 in combination with bs=1k) and then writes the new bootloader at that location, right over the old one. The `conv=notrunc` part makes sure that the rest of the original file doesn't get cut-off.
Now you have a patched img which you can burn to your SD card.
This would be great to be fixed upstream, but right now I don't know how to.