I think assertions are the right default—they’re better for feature work and bug fixing, and only worse for performance testing. I also think that if assertions were off by default, the assertions in the standard library would rapidly lose sync with the code that actually gets run. Folks would hit a bug, turn on assertions to try to debug the issue, and find assertion failures in totally unrelated parts of the standard library.
I don’t suppose we could build both asserts and no-asserts standard libraries simultaneously, so you can easily switch between them? We don’t have anything else we can build in parallel with the standard library anyway...