I haven't had a chance to mess around with these sorts of macros all that much, but I'd imagine it's just what you think: lag. The server doesn't update your client fast enough as to what stance you're in, so the macro ends up trying the wrong ability.

Also, macros interrupt each other. They're fired one line at a time, and any currently running macro is interrupted & stopped by any new macro being activated. These should be going from line to line pretty much instantly, so that interruption might be getting a little screwy. Try making a macro with just three /echo or /t <me> lines like so:

/t <me> line 1
/t <me> line 2
/t <me> line 3

Spam it as fast as you can. I haven't tried this yet (keep meaning to and forgetting) I wouldn't be surprised if your chat log fills up with lines all out of order and jumbled up. In theory, you should only ever get 1, 1-2, or 1-2-3. If you ever get 2, 2-3, or 3 on their own/out of order, that shows that interruption isn't working correctly, and that would partly explain why it'd fall through to Dragon Kick; you're ending up with the last line(s) of the macro going off on their own, and since Dragon Kick doesn't need any particular stance, it goes through.