To explain further, Marketo webhooks happen to have been implemented in an asynchronous fashion. There's nothing inherent to webhooks in general that makes them asynchronous, but Marketo's are.
Data value changes from a Marketo webhook's Response Mappings happen in the background. Even if the flow has continued to the next step, there's no guarantee that the changes have been made in the database.
You can think of Call Wehook as like calling Request Campaign, so embedding that within an Execute Campaign breaks the "contract" of Execute Campaign.
If the webhook implementation changed, it would be compatible with Execute, but I wouldn't be hopeful about that.