Чтобы выявить неправильные данные, не удовлетворяющие инварианту, на ранних стадиях.
Так как никакой функциональной разницы с исключениями от самой системы нет (это позволяет обнаружить скоррапченные данные, но не место их появления), я вижу больше смысла в том, чтобы логировать все конкретные значения, нежели расставлять ассерты.