This applies to CardDAV. CalDAV essentially already buffers all items because it needs to look into items to determine whether they are events, tasks or journal entries.
With CardDAV, change detection can be done without downloading all items. Then when the Synthesis engine needs the next item, we do a GET, one item at a time. This can be enhanced with a read-ahead cache similiar to the one in the EDS contact backend and MULTIGET.
Implemented in 1.5, see the "CardDAV: implement read-ahead" commit.