Hey borkke!
I am probably not clearly understanding your distinction between the two options, so I'm giving this a shot - please consume with a pinch of salt.
When you add a service to your platform, one of the main goals (as I understand platforms) is to add automation and self-service. That leads to the fact that "adding a service" does not equal "creating a database and sharing the connection string" - good old ticket drive processes from pre-platform times.
So the bottleneck in both cases must be "creation of a service for the platform", as the "requesting a service instance" in both cases "your own interface" or Terraform is basically the same effort for the developers with the difference being in the interface.
When it comes to the creation of services, I would not let developers do that. The main reason being, that developers should not delve into the depths of the internal alignment needed to create a service (e.g. security, compliance, legal, contractual, etc.) and also should not make decisions on the defaults that come with a service, as their perception of sensible defaults is just more limited than what the platform team can observe across all teams.
Please let me know if my understanding of what you meant is wrong - I'll be happy to re-think!