There are just a ton of features that evolved separately from the core project. Plugins allow folks to do things in the project that the maintainers didn't envision or have time to maintain - that's actually how the datastores came to be. I think being extensible has made some things more difficult - particularly maintenance of the main project - but also made it have longevity for folks as they can mold the system to work as they'd like (the plethora of community plugins speak to that). It's a bit like how programming languages have modules or packages you can install/import into your app.

The datastore plugins were initially external as there was a ton of movement in maintaining them and it was at a different pace from the main project, though I'm now working on ways to bring them back into the core as they've stabilized quite a bit over the past decade.