I'm fairly sure that this excessive memory usage is not required, it's just an omission that is not noticeable on bigger hardware.
FAUST represent soundfile object as a 2D array of 256 parts (i.e. files) x 64 channels. AFAICT, empty parts would still perform a separate buffer allocation. As a worst case scenario, loading 1 file per soundfile would create 255 empty buffers (of 16k currently).
Note that I'm using a slightly edited copy of their code in our integration, so I can alter it freely (upstream code requires C++ stdlib and uses exceptions) . The plan is to use a pointer to a single empty object to avoid this useless allocation.
Also, FAUST does have a global empty object that is used as replacement in some cases (i.e. if loading failed). So I'll make sure that this object and unallocated parts point to a single empty buffer.