Hi AllanHeo,
I actually reached out to our account manager and engineer. A great alternative they suggested was to build a canvas and use the user update module with the advance json editor to do it all in one go. Attaching user update description to read if you're curious.
I was able to update multiple subscription group all at once. There is a note that the module will consume data point but from testing with Braze it didn't seem to consume any. Based on the documentation, subscription group is a non-billable asset therefore it shouldn't consume your allotment. If anyone wants to try and use it, suggest confirming with your account manager prior (just in case).
Quick note for your tutorial. If you're using webhooks and directing to the /subscription/status/set then the 5000 per minute request must take into consideration the total number of webhook passing to that endpoint. If you set 5000 per minute for each webhook, you will run into skips. The maximum documented is for all passing communication within a minute. For example, if you have 3 subscription group passing to that one particular endpoint then you will need to set each to 1000 or a combination of it. As long as it does not exceed 5000 because on the chance that they all fire (potentially at once), they will all get through and update profile successfully.