Usually it's best to establish defaults as early as possible. This typically means during registration. Ideally on onAfterUserRegistration trigger with a Field action. You should only need to do this for fields not displayed on registration though since the "Default Registration Value" parameter can be used if visible on registration.
If you really want to do this on onBeforeUserProfileEditDisplay then the below should work.
Global
Triggers: onBeforeUserProfileEditDisplay
Type: Code
User: Automatic
Access: Everybody
Conditions
Field: FIELD_NAME
Operator: Is Empty
Action
Method: PHP
Code:
Code:
$variables['var1']->set( 'FIELD_NAME', 'FIELD_VALUE' );
Parameters
References: Variable 1
FIELD_NAME should be whatever field you're wanting this to apply to. FIELD_VALUE should be whatever value you want to set it to. This should just directly let you modify the user object before profile edit form behavior without storing anything to the database yet. Then when they save profile edit it will store the change.