It looks like you have found a runtime bug in the Studio API. The low level reverb system is supposed to be disabled by default on event instances. The event code achieves this by calling Channel::setReverbProperties(0, 0.0f) on each new channel that it creates. However, it looks like there are certain cases where this code is not executed, and the channel will be left with its default setting (wet = 1 for reverb instance 0, wet = 0 for reverb instances 1 - 3).
That would explain why you can hear reverb for events via the 3D reverb created with System::createReverb3D, because that system uses reverb instance 0 by default.
I agree that the low level 3D reverb system is a great feature, and that we should extend it to affect event instances too, via the Studio API. In fact we do intend to add support for this in an upcoming release. In the mean time, here’s a workaround that will let you enable or disable 3D reverb per event instance in the current version…
To enable reverb on an event instance, call Studio::EventInstance::getChannelGroup to obtain the ChanelGroup corresponding to the event’s master track. Then call the low level API: ChannelGroup::setReverbProperties(0, wet), where 0 < wet <= 1.
To disable reverb on an event instance, you again call Studio::EventInstance::getChannelGroup to obtain the ChanelGroup of the event’s master track. But you can’t just call ChannelGroup::setReverbProperties(0, 0) because then the reverb behavior will revert back to the individual channel settings. The workaround is to set the wet level to a very small non-zero value. For example, ChannelGroup::setReverbProperties(0, 0.0001) will likely be inaudible.
Please note that there are several gotchas you need to be aware of when reaching in to the channel group of a playing event instance. Read the documentation of Studio::EventInstance::getChannelGroup for the gory details…
http://www.fmod.org/documentation/#content/generated/FMOD_Studio_EventInstance_GetChannelGroup.html