When designing CS profiles, a common design question is how do I know whether to mark a property as required. Here is my guidance.
If the field is required in ALL cases, then it should be a marked as a required field in the UI, the profile definition and the DB schema. In most cases, the UI and the profile schema should match. The DB schema does not have to match except for fields that cannot be null (id, email address, unique keys, etc). In these cases, the UI, the profile schema and the DB should have the field marked as required.
Here is a chart that I use to help me with the design:
Note that there may be other rules that require this to be different such as when the user profile comes from another source or is feed somewhere else. In this case, defer to the DB Schema to drive your design.