Once the sketch is compiled, the IDE should tell the compiler only to compile the files that have changed.
The modern versions of the standard Arduino IDE already do this. The only exception is that the sketch code is recompiled every time, but all the other previously compiled files are cached and only recompiled if a file is modified or if you change the board selection in the IDE.
There have been some problems where certain 3rd party cores were misconfigured in a way that caused the caching to not work, but I wouldn't expect that from the official core. From a quick test, it looks to me as if the caching is working as expected when compiling for the Nano 33 BLE. If you turn on File > Preferences > Show verbose output during > Compilation and then check the contents of the console window after the compilation, you can see the location of the cached compiled files that are being used.
I agree that compilation is notably slow for this board, but I think the cause may be recompilation. Perhaps it's related to dependency resolution due to the huge number of files in the core added by mbed.