The big difference that comes to mind is that Koin doesn’t support multibindings, and doesn’t look like there are any plans to add it since
the issue requesting it was closed without actually being implemented. Kodein does support multibindings, and generally offers many more features than Koin, but Koin is intended to be a more lightweight option.
Personally, I find the Koin DSL to be cleaner and easier to read, but I’ve really struggled to get it to work well with any use-case it doesn’t explicitly support. I find the scoping API confusing, and you can’t really define a hierarchy of injectors like you would with Dagger. I haven’t used Kodein all that much, but I personally would choose Kodein over Koin the next time I need a KMM service locator.
Kotlin-inject is another option I’ve got my eye on, which is basically a reimplementation of Dagger in KSP