My approach would be one file per address book, containing all vCards for that book, as that's mostly how I've seen vCard being used in the past. Are the any reasons against that that I may not be aware of, e.g. with regards to file locking or such?
Conrad Hoffmann referenced this ticket in commit 2b6220c.
I would not expect concurrent writes for per user carddav or caldav storage, might as well be unsupported.