I assume it’s mostly because it’s way easier to debug json over websockets and http with browser devtools instead of custom protocols.
Custom protocol would be binary.
They could make a custom extension but it wouldn’t be that easy.
I worked on browser devtools for IE and edge.
Even chrome/vscode use jsonrpc over websockets for ease of development.