I did not test it completely but when working with following scenario:
- fork with for each - 2 iterations
- fork has one transition that goes to Task - assignee was based on for each variable
- join does not have multiplicity attribute
What happened was that after first task completion the other one was not found since join decided to go on after first path reached the join activity. and task was deleted when processInstance was removed.
I agree with you that is could be serious in consequences.
Perhaps we could try to define as much as possible scenarios to try it. In addition provide really good documentation for it in dev or user guide.