We can perform the import in background no problem in that there are no big technical limitations, everything is thread-safe, etc. We don't do this because we don't want to expose components that are in the process of being built (fields / indexes / records / metadata) to the user. Half-created components will likely refuse to work as they should, but what's even worse is that once they accumulate enough data from the import to actually work, the user might start making changes to them and that's unlikely to end well.
Preventing the user from accessing half-created components is difficult enough as it is (it is not enough to just let the UI know that a component is in the process of being built, this has to be carried to scripts and queries = to the data level), but suppose we solve it. What should the process look like? You start the import and it goes into some pane, fine. When the import finishes, there will be some notification and the results of the import will be fully available. But what happens in the middle? Should the UI not display any of the imported components until the import completes (that's fine, but there are all sorts of weird things like the user creating a drawing named "States" and getting "States 2", because a background import took the name "States" already)? Should a second import into the same MAP file be allowed to start concurrently with the first (again, that's fine, the data will survive, but the name clashes between the imports will be resolved weirdly)? What about the export - if you start an import and then try to export the MAP file, should the export not see any of the imported components because the import did not yet complete when you started the export (the import could complete mid-way through the export, but presumably this should not make the imported components available to the export, because the export already started)? In fact, shouldn't export also be done in background? But if it does go into the background, perhaps all components and the database should be made readonly for the duration, right? Otherwise you would be able to delete a component and it would be unclear whether the exported file will have it or not.
From what we see, the issue is mostly about the user experience quickly becoming too complex and quirky.
Maybe it would make sense to allow converting data to MAP file in background and then linking the result as a data source - that stops introducing components into the opened MAP file (only adds one for the linked data source and does so at the very start) and avoids all of the above issues.