It appears libarchive limits writes from a single archive_write_data() call to 0x7fffffff bytes.
from contrib/libarchive/libarchive/archive_write.c
const size_t max_write = INT_MAX; ... /* In particular, this catches attempts to pass negative values. */ if (s > max_write) s = max_write; ... return ((a->format_write_data)(a, buff, s));