Such lax approach to UX polish has traditionally been associated with Microsoft, not Apple.
External data storage lets you offload large binary data from being stored in the SQLite database without changing how you access that data from objects in the graph.
An example might be if you're creating a photo library. Rather than storing the actual photos as say BLOB data in SQLite, you can tell Core Data to transparently store it as an external file. It then basically stores the filename and some metadata in SQLite instead, keeping the SQLite database small without changing the Core Data API to access the data.
On iOS 12, binary data stored in Core Data with the External Storage option gets corrupted on every second save [2]
https://forums.raywenderlich.com/t/where-is-allows-external-...
You absolutely have to wait for the completion event for a write before issuing another write to the same key for example.
CoreData has the option to store blobs as flat files, outside the SQLite DB. The DB only contains the metadata to locate the files. Looks like they're messing up these external files.
I don't know what's wrong with core data because throughout the years it's been one of those technology that are both unconvenient AND regularely unreliable.
On why Core Data is inconvenient: it's as inconvenient as any ORM framework in general.
http://blogs.tedneward.com/post/the-vietnam-of-computer-scie...
Also, you're mentionning ORM, but relying on a relationnal database as the underlying storage layer for objects doesn't have to be.