Why the parameter "AssertionLevel.warning" does not behave as expected? Indeed, the use of "warning" behave as "error" does. Therefore, when the assertion turns to false SystemModeler throws an exception and stops the simulation. I guess Wolfram hasn't implemented this functionality yet - is that it?
Your are correct that SystemModeler 4.0.1 treats "AssertionLevel.warning" as error.
This has now been fixed and will be available in the next version of SystemModeler.