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));