Why all core services cannot be registered in core.services.yaml?
Why cannot all the core services be registered in core.services.yaml?
Why do we need a service provider class to register services or modify existing services, when we can register services in module.services.yml?

I think the answer to both these questions is that likely some of the services are dynamic. Yaml files can only be used for static registration of services.