In my experience, if a field is not mandatory, it will be not filled in.
Providing content on the go decreases user effort and help her/him to accomplish the task.
In a nutshell, if is not mandatory, do not display it in the main user task!
You can always provide an extended version of the web form, according another user journey, for example:
Scenario - registration process
2 fields, username (with server side validation), email (with server side validation)
1 CTA as Register button
A message from the system will be sent to the registered email providing an activation link
Users receive the link and clicks on it. They will land on the setting page (always available) with:
Fieldset 1 - one field for the custom password with a self-explanatory palceholder and highlighted
Fieldset 2 - additional information
1 CTA as Update Profile
Another hook could be to send an email inviting users to complete the profile
I don't know the scenario you are working on and I hope my example is self-explanatory about the UX approach