EXIT /B 0 is critical from the previous implementation.  Without the exit code of 0, the following can happen:

If the instance is restarted (but not redeployed), the startup command is run, we try to enable dynamic HTTP Compression but it's already enabled, so the appcmd.exe set config call fails.  We leak that error code and the startup command is reported as having failed.  Azure then assumes the role couldn't be started cleanly and it reboots the instance automatically.  Infinite loop.

This was the cause of our first major outage.  The guidance from the Azure folks was that:

A) startup commands must ALWAYS be repeatable
B) never return an error code from your startup command, unless it truly means that your role is truly hosed