To give my own view: I am firmly in favour of assert statements, and I think it's fine that the user can disable them (personally I would make on the default though).
I think asserts should only be used for situations that should never happen unless there are bugs (or maybe configuration issues); they're not for input validation. But I think that's commonly accepted knowledge. They should also not have any side effects.
Advantages:
I think there can be situations where it is okay to turn them off for performance. At some point, you may have enough faith that things work. Same reason you test a representative subset of values in unit tests, rather than everything. But as with most optimizations, I would keep them on until they become a problem.
It'd be even better if the language could enforce that side effects aren't present.
You can shoot yourself in the foot by using assert checks with side effects or using it for things that can happen, but you can get in trouble with any type of mistake. I think asserts find a lot more problems than they cause.