What you’re trying to do is tricky in k6, because VUs and scenarios don’t share state between them. And in this case you do want to know exactly which instances were created, so that you can delete them later.
__ITER won’t help you with this, since it’s an increasing iteration number per VU, and you would get collisions as soon as you use more than 1 VU. The reason this appears to work if you start the second scenario at 5s, but not at 60s, is that after 60s the VUs from the first scenario are returned to the global VU pool, and the second scenario is reusing them, so __ITER from these original VUs are then incremented. Whereas with 5s both scenarios use different VUs.
BTW, the use of __ITER is discouraged, and you should use the k6/execution module instead. There you have more variables, such as iterationInInstance and iterationInTest, which wouldn’t cause collisions, but would still be unsuitable for what you want to do.
Take a look at this similar question. There are several solutions mentioned there. One approach that would work for you is to use Redis with our experimental module. You could use the RPUSH command to keep track of all created instances, and then do an LRANGE to get the list in the teardown() function and delete them all. If you need to keep track of a monotonically increasing counter across all VUs and scenarios, consider using the xk6-counter extension.