I've given it some thought.
It looks like this behavior occurs when attempting to read the last chunk of the target element generated from an infinite input source. So, I feel simply swapping the conditions probably won’t solve the problem.
user=> (def src1 (concat (repeat 0 64) (repeat 1)))
#'user/src1
user=> (take 40 (sequence (filter zero?) src1)
;;; ---> out of memory
As a workaround for safety using sequence/eduction, I feel that we should consider avoiding the use of infinite input sources or, if possible, using the `take` function within the xform to convert the input into a finite amount.
Given the design of chunked reading, perhaps that’s just the way it is.