good question. I write contemporary classical music. In my score, for example, I have an independent tempo variable as a workaround for the current Lilypond lack of "tempo spanners" like rit., accel., etc. I merge this together in the score, and in the parts. Though not ideal, this is a minor inconvenience, since tempi are not something that changes so often, not even in CCM. But dynamics are something that changes very quickly. In my music, it's not seldom to see four dynamics in one measure. An independent dynamics variable full of spacers is thus cumbersome, since the variable where the actual music is, would have to be stripped of dynamics information, or I would have to remove the dynamics engraver and duplicate the corresponding dynamics to the variable full of spacers. With whatever option, when writing a new phrase, I would have to write everything in the music variable and then go to the dynamics variable, count the rhythms (which often includes tuplets) and add the dynamics. This is not really an efficient way to compose! :-). The music variable wouldn't look as readable to me without the dynamics. Lilypond's syntax is basically its "interface", and an independent dynamics variable, if not used as such (see the case of band music above), reduces "usability", in my opinion. So I would say the only pro of using a separate dynamic variable is that you can reuse a dynamic variable. The same can be said of basically every variable. For the sake of keeping a more readable syntax, though, in case I would really need to call the same dynamics (even in concert band music!), I would rather put my music with its normal syntax, make it into a section variable and call the section variables from a dynamics context, using the technique described by Xavier. That way the Lilypond syntax can remain unaffected.
As for what I started using the dynamics context, yes, it is alignment concerns. Lilypond's default behavior of making dynamics only aware of crescendi/decrescendi is not ideal.