This is a great question. Infact i was discussing same with my team today only. We have a deployment service that creates a CRD and keep state in database, while now i think this is overkill as we have to implement an audit system so we can audit who did what and why. Being GIT as center of everything gives a big advantage that is compliance. Everything is audited, who did what change when. Building IDP on top of git can be a good way to go about IDP.
1. API trigger changes in git on user's behalf
2. You can pull yaml, parse it and give user option to change it as they want before creating a new PR.
We are a small IDP that we use with deployment service that interact with kubernetes, while now we are planning to go with git based model. Still in discussion though.