Instead of having decentralized identities, we can just use public keys directly and attach that to verifiable credentials for proof validation?
The problem with using a key directly for identity/creds is that there is no way to roll keys or attach PKI metadata (e.g. routing info) to your ID (which, in this case, would be the public key). Also, if the key you generate is locked to hardware (via an enclave) you would not be able to get a new phone without losing your ID, given use of the ID is bound to possession of the device it was generated on. Furthermore, if you were to attach a high-value credential to a key, and that key was compromised in any way, the ID and your creds would be under the control of the attacker, leaving you no way to sever the credential from the key or recover the provenance of your ID.
Decentralized Identifiers typically use a blockchain to manifest a self-sovereign GUID that can be mapped to keys. This enables you to roll keys, change PKI metadata, and perform recovery against the ID. The ledger acts as a deterministic, decentralized, linear chronology of events, which is uniquely suited for this use case.