Ответ
Нет, zip в RxJava не гарантирует параллельность по умолчанию. Он просто комбинирует эмиты нескольких Observable в один, дожидаясь, когда каждый источник выдаст соответствующий элемент. Параллельность зависит от Scheduler, на котором работают источники.
Пример:
Observable.zip(
Observable.just(1).subscribeOn(Schedulers.io()),
Observable.just("A").subscribeOn(Schedulers.io()),
{ num, str -> "$num$str" }
).subscribe { println(it) } // "1A"
Здесь оба Observable работают на Schedulers.io(), поэтому обработка происходит параллельно. Без subscribeOn всё выполнится в одном потоке.