Otherwise the main differences seem to be design-wise, where in Tor you rely on a centralized bootstrap to get the list of relays whereas I2P does this via decentralized NetDb.
It's also written in Java and the router web UI was pretty snazzy from what I remember.
Tor's take on the common proposal to do this is at
https://2019.www.torproject.org/docs/faq.html.en#BetterAnony...
and notes this threat model issue:
> There are some cases where it doesn't seem to help: if an attacker can watch all of your incoming and outgoing traffic, then it's easy for them to learn which connections were relayed and which started at you. (In this case they still don't know your destinations unless they are watching them too, but you're no better off than if you were an ordinary client.)
(I'm not mentioning this to criticize I2P's design, just to point out that the benefit you get from this decision depends a lot on your threat model!)