I think this question really highlights why you probably shouldn't be doing what you're doing.
1st. You're adding three pairs of int's, and your using a Stream so you have to use Integer. That's huge overhead relative to the operation.
2nd. The concept of Stream is not limited to ordered sets of data.
For that reason collecting to a list makes sense because you're explicitly operating on a finite ordered dataset.
List<Integer> la = a.collect( Collectors.toList());
List<Integer> lb = b.collect( Collectors.toList());
Stream<Integer> result = IntStream.range( 0, la.size() ).mapToObj(
i -> la.get(i) && lb.get(j)
);
It might be more stream-like to use a.iterator() instead of lists because you wouldn't be limited to finite datasets.
Iterator<Integer> ia = a.iterator();
Iterator<Integer> ib = b.iterator();
if( ! ia.hasNext() || ! ib.hasNext() ) return Stream.empty();
return Stream.iterate(
ia.next() + ib.next(),
last -> ia.hasNext() && ib.hasNext(),
last -> ia.next() + ib.next() );