Just in time doesn't mean "buffer free". It means eliminating unnecessary buffers.
When Ford ran out of chips (https://www.cnbc.com/2021/03/31/ford-slashes-vehicle-product...) because of its "just-in-time" process, Ford was able to give 2-months of notice before shutting down one of its lines.
That means that Ford had a 2-month buffer __in practice__.
----------
When you go bot-based, you have full control over the size of your buffers at all steps of your Factorio design. At that point, you realize that smaller buffers are more efficient, and that larger-buffers don't do anything.
Ex: if you achieve maximum throughput with buffer-size 20, you leave it at 20-sized buffers. There's no reason to buffer-up 1000x items when 20-sized buffers work out fine.
---------
Belts force you to buffer everywhere... and proportionally to the size of the belt. A long belt 1000 tiles long would force you to buffer up 7000 (one side) or 14,000 items (double-sided). The size of these buffers are grossly larger than what anyone needs.
The key buffer size is usually 12 (the stack-inserter's grab size). Maybe 24 or 36 so that you have enough buffering to handle 2 or 3 swings of the stack inserter in case those items don't arrive on time (bots "seemingly randomly" run out of power, from the perspective of that assembly machine)... but anything more than that is redundant. Buffer size 50 (minimum size allowed on chests) are used in practice.