IMO the best long-term approach would be to combine both methods, as it aligns well with the long-term goals of SwiftFoundationICU.
Currently, the icu_packaged_main_data.*.inc.h files are built from a prebuilt version of Apple ICU. Ideally, in the future, we should build the data file as part of the SwiftPM build. This way, as you mentioned, we can also support optional thinning. However, I haven’t yet found a good way to “merge” the CMake-based build with the SPM build, which is why we’re currently using pre-built embedded files as an interim solution. I suspect the ultimate solution will involve rewriting the ICU data build tool as a plugin, allowing it to be integrated into the SPM build.