Hey there, I spent some time trying to get this working from blueprints as well, only to find they can only be modified in a MaterialInstance not a DynamicMaterialInstance. The reason for this is the material needs to be re-compiled every time the switch value is changed.
For now the Lerp with float to bool is really the only way to do this currently, unfortunately this causes the material complexity to be a lot higher. With a StaticSwitch or a regular switch with a StaticBool it will turn off a section of code to reduce the material complexity, but with a Lerp it will cause it use the full network, increasing the complexity.
Hopefully this will be changed in a future release, but for now there is no other option unfortunately.