A high-level IR implements the semantics that the programming language provides. You can only share it if the semantics are reasonably compatible.
This would be akin to asking why do we need a C++-specific AST and a Swift-specific AST.
This would be akin to asking why do we need a C++-specific AST and a Swift-specific AST.