You can run your caldav/carddav service in your local network, if you are so inclined. You will get local sync, and the client authors do not have to build specific desktop-based tools.
I for one do not want to return 15 years back, to serial/irda/bluetooth sync, having to think about sync, and eventually forgetting. Running a local service is much preferable, with devices syncing themselves as they see fit.