The point of a macro, in any software, is to make a set of instructions repeatable with a single input. That is exactly what this does. I think where you’re getting tripped up is how you’re thinking of the device itself. It’s best to think of the device that is placed on the graph as the result of the macro. The macro itself is less the device, and more a set of instructions that say “Create a container that holds these devices connected in this way with these parameters”. When you go in to edit that macro device, you are not editing the macro itself, but the devices created by the macro. To edit the actual macro, such that every instance is updated, you would have to edit the internals of the macro, then resave the macro device, and then possibly reload the project. Which raises a question, actually; are you using macro devices that you’ve saved to your macro library, or are you creating an empty macro device, adding devices inside, and reusing the same macro device?
All that being said, as @HYLK has mentioned, you may not be using the Macro system “correctly” if you find yourself diving into the internals often. If the only edits to the macro you are making are parameters within the devices, those parameters should be exposed in the macro device, removing any need to dive into the internals of the device. It could be helpful for you to post a project file with at least one macro not behaving in the way you expect. We could all take a look at it and help more.