...well, that is, it's definitely user error, but should Ash care about it? I'm not sure.
At the moment, when you remove an entity, the internal links to other entities in the list cannot be reset because that would break list iteration. However, this does leave some dangling pointers which can cause problems if the entity is removed again by error before it's re-added to the system. I've stuck together a gist with some example code and the trace output:
The second time b is removed it resurrects c. Although it's not evident from the trace output, internally the list is in a bit dodgy state - c points to d, but d points to a.
So my question is should Ash try to protect a user from abusing the API in such a way?
If the answer is yes, I can chuck a pull request your way which will solve it. For what I'm doing just now it was simpler to fix it at the engine level than to sort out my Systems mess :)