Why does i2p use inbound/outbound tunnels, where each tunnel has at least 3 nodes, while Tor just makes a direct 3-node "tunnel" between the user and server? What are the advantages and disadvantages of each approach?
The pro's of i2p is that in the tunnel-model it's possible to make a "garlic routing", but they're not implemented it yet in full scale. it will make possible to transmit multiple tunnel's packets in one "package". And I2P uses local site-naming directories rather one distributed one in Tor. Basically - except a tech deep-sea details - there's the main difference between them. Pro's of multiple site-naming directories are just multiple namespaces, but they're based on a single node - that's the problem. In tor's global namespace the HS announce can be really long due to it's distributed nature - in i2p it's instant after approoval(if any enabled on a dir you're registering to).
Packet switched instead of circuit switched
implicit transparent load balancing of messages across multiple peers, rather than a single path
resilience vs. failures by running multiple tunnels in parallel, plus rotating tunnels
scale each client's connections at O(1) instead of O(N) (Alice has e.g. 2 inbound tunnels that are used by all of the peers Alice is talking with, rather than a circuit for each)
Unidirectional tunnels instead of bidirectional circuits, doubling the number of nodes a peer has to compromise to get the same information.
Tunnels in I2P are short lived, decreasing the number of samples that an attacker can use to mount an active attack with, unlike circuits in Tor, which are typically long lived.
No actual reason actually. It is just because jrandom preferred unidirectional tunnels and hated Tor's circuits at the time he implemented I2P.