You can still do that, well with a small boot action addition to your main application.I preferably want the filesystem to be ready when programmed
As I understand it you simply lack the ability to directly place a FatFS image into FLASH whilst preserving wear levelling details.
You can however program a SPIFFS image or some other file system.
Assuming that you have sufficient storage to hold two images then your programming procedure simply programs the SPIFFS image (or which ever FLASHable file system).
When your application boots it checks flags and then copies from programmable file system to FatFS & clears the programmable file sysrem's 'new' flag.
It may be a little slower on first boot but perhaps not that bad?