I think you’re talking about suppressing the orphan rules, which are used to guarantee coherence, not suppressing the requirement that impls be coherent itself. That is, you don’t want to be able to provide overlapping impls, you want to be able to provide impls that the compiler won’t let you because if it did you could get overlapping impls in theory. Correct me if this is wrong.
If the crate is a binary rather than a library, no other crate further down the line can include it and another crate with the same implementation.
If the crate is a binary, crates further up the line can cause conflicts. You could upgrade a dependency, or add a new one, and in doing so break your build. Rust currently prevents that from happening.
Like every request for turning off orphan rules in some context, I think allowing users to make more complex expressions about their impls would be more fruitful.