This doesn't work because subevents carry on picking where the parent left off.
The event runs like this:
1. First array instance created. The 'create' action picks it.
2. Its UID is saved.
3. Second array instance created. The 'create' action picks it. This is now the only picked array! The other array instance is no longer picked!
4. Enter the subevent. The subevent inherits the parent event's picked objects, i.e. *only* the second created instance.
5. Conditions only ever run on the picked instances. So "pick by UID..." in that subevent will only pick from the second created instance, which does not have the UID you want, so the event can never run!
There's no bug here, it's just Construct 2 working normally.
There are three possible solutions:
1) Use system 'Pick all BaseArray' before the 'Pick by UID' to go back to both arrays picked rather than just the second array picked.
2) Make a new start of layout event and move the pick by UID to there.
3) Don't use multiple instances of array - it's much better to use two different array object types than two instances of the same array (i.e., insert a new array in to the layout again and use that).