Great info.
A few things.
The docs talk about the epcs bootloader ROM as if this is some FPGA onchip ROM whose contents are determined during project compilation.
Yet I see from your steps above the epcs bootloader gets bundled with the u-boot image. Are there two bootloaders?
How do you figure out how much app code you can fit?
For my HW the data sheet says:
EPCS1 = 131072
EPC4 = 115564 ; uncompressed
spare = 15508 ; ignoring bootloader overhead
15KB is not enough for u-boot, but if both the config and app could be compressed, that would allow around 100KB of app code.
Do you lose the ability to use compressed files when you program with the flash programmer?