Foreach loop in BP apparently loops through the array using a reference and does not copy it. When you remove an element from an array it automatically shifts all elements after that to left so that indexes still start from 0 to the number of elements - 1.
What this means is, Foreach runs the first iteration and spawns the first actor, then removes the actor from the array shifting every remaining entry 1 index to the left, which makes the original second entry in your array first entry now and the second origin entry the second current entry. On the second iteration your second entry of the array will be spawned (Originally the third actor) and then removed which leaves foreach with no more entries to iterate over (index 0 was already used even though the actor at index 0 at the time was a different actor). This ends the foreach loop with 1 element left in the array and not spawned.
What you can do to solve the problem is to make a new array containing removed indexes, after you spawned all tagged actors loop over it and remove indexes stored from the actors array, then empty the second array (so you won’t unintentionally remove actors next time you use it)