When the ForEach Controller begins, it checks that <variable>_1 exists, regardless of what the start index is. To recreate it, simple create a variable named something like "myVar_0" and then call the ForEach Controller with a start index of 0. Because there is no "myVar_1", the ForEach Controller will not run. The documentation does clearly state that if <variable>_1 is null, the looper will not run. My impression is that this is a legacy, default value from before start and end indices existed. I feel that a more intuitive solution would be to check the start index and, if not given, default to 1. Then, loop until the variable returned is null.
*** This bug has been marked as a duplicate of bug 55201 ***
This issue has been migrated to GitHub: https://github.com/apache/jmeter/issues/3211