This has been discussed a few times before, eg:
It is irritating that you have to repeat the regex, but it is problematic to do otherwise.
It would be rare that you want to iterate over the different capture groups, typically each part would mean something different. So you really want to capture all the capture groups to variables like the Search using Regular Expression action does.
And it needs the regex as well to know how many fields there are so it can allocate variables to them. And I don't think it would want to use some sort of spooky reference to the For Each action.
Nor do I really want to violate the way collections work by having it assign other variables as part of its behaviour.
So unless I come up with some other way that I like better, you are stuck doing a For Each and then a Search using Regular Expression.