Databases are intended to record assertions of fact.
To allow a user to make incomplete assertions and to have the dbms make silent assumptions about the incomplete part, is plain bad.
If you want robust, reliable systems that can be kept in use for longer times, then don't let any part of that system ever make assumptions about what the user does not say.
Handle defaults at the presentation level and nowhere else. And handle them in such a way that there is no way for the user to not have seen the data he submits (ALL the data !).