In essence batching allows for more efficient usage of memory bandwidth. Without batching for every generation you need to transfer the whole model from GPU memory to GPU core once for every image which sets an upper bound on speed.
With batching the bottlenecks start showing up elsewhere.
For SD1.5 4090 is able to do ~17it/s without batching and ~90-100it/s with batching.
Although these numbers might be old at this point, I looked at it ~3mo ago.