CoreData doesn’t have the template abstractions so it’s a step down in terms of wrapper quality.
In fact, the original soci wrapper was written to allow the back-end to be swapped out. Currently they support quite a large number of back-ends of which SQLite is just one:
http://soci.sourceforge.net/doc/structure.html
http://soci.sourceforge.net/doc/backends.html
It is entirely practical to implement a CoreData backend which would allow all of the expressive compact notation of the soci templates while also gaining the benefits of using the OS abstraction.
The database wrapper in VFLib started out as stock soci, and then I stripped out all of the features for supporting multiple backends - hardcoding it to be SQLite-only. The reason I did this is because not all database features can be cleanly mapped between backends. For example, the concept of “last insert rowid” varies from backend to backend (some don’t even have it). By restricting the scope of the VFLib database wrapper to SQLite only (which is the best embedded database) I was able to provide robust support for features available only in SQLite and not having to worry that these things would also work in MySQL or Oracle backends.