The bbdb-syncml package synchronizes bbdb records converted to vcards with a SyncML server. There will be added a custom field to the bbdb called LUID. This is the ID used for matching a local bbdb record with it's server counterpart. LUIDs should be unique over the lifespan of your BBDB database. (that is: don't change or assign the luids yourself, and never re-use a luid which have been previuosly used by a deleted record.)
The SyncML standard say very little about how your synchronization objects are represented. For the BBDB, two alternatives comes to mind: Storing bbdb record in their native lisp format on the server, or converting them to some other format before syncing. For me, my target syncing devices are the Evolution program and a Sony Ericsson P800 mobile phone (when I'm able to afford it...) Both these devices use the VCARD standard for their address book, and therefore the bbdb-syncml package uses vcard as the format of the synchronization objects.
bbdb-syncml uses a mapping file to keep track of 1) which records where present in the database during the last sync, and 2) the value of the next luid to assign to a new record.