The intent with this feature was to avoid developers having to install dependencies twice (node tooling typically *requires* that 3p dependencies are installed in the source tree, and that build system outputs go in the source tree as well). That's still a worthwhile goal, but your understanding is correct. I also wrote
this doc about it which points out another flaw: having the external repository live in the users project interacts poorly with CI systems which do a clean before building, causing a repository invalidation on every build. If you're interested in more details on the problem and their mitigations I'm happy to write more. Short version is that the correctness and usability issues here don't feel worth the benefit.
I think deleting managed_directories is the best thing for Bazel. As always, the incompatible flag flip will have to be staged out over time, but assuming this was never used in google3 or Bazel itself, I imagine the only "work" required is to follow the incompatible change process to make it disabled-by-default in a major release, and then delete the feature in the subsequent release.