From what I've seen working with other developers getting started with Flow is that they just accept the Apply to each without understanding why it is added and it causes a ton of confusion. The main issue is that it is hard to tell when selecting Dynamic content which item is going to add an Apply to each loop. Currently selecting an item that is an array will automatically add the apply to each around the action you are editing, which isn't usually what is needed. If the process was you select a piece of Dynamic content that is an array and you get a confirmation "Do you want to add an Apply to each loop?", then the user would be forced to think about why the loop was being added and it would allow you to cancel out before the loop gets added.
One other thing that would help with this is if the Dynamic Content items showed their "data" types somehow. So advanced users could tell if the variable was going to need a loop before selecting it.