It is easy to see that your program is in one of several states ensure that its state-transition behaviors are consistent with the state transitions you have designed, and it is easy enough to reason about state transitions at a high enough level. On the other hand, it is difficult to reason about the state of multiple asynchronous components. This will help with that.
In addition, when designing a new feature, I can see this helping to decide where would be an appropriate and natural place to tack on the feature.
This kind of thing isn't usually implemented as a formal state machine in "real" code, so even if designers were capable of writing the "real" code, they wouldn't be able to automatically generate an interactive diagram the way this thing can.