Most likely this is happening because one of the fields being used in the default value is being set or modified when the form is opened, and you have the "Update this value when..." option selected.
Allowing a field with a default value to be overriden is a tricky proposition. I'd suggest providing a separate field for allowing user input, and not letting them modify the calculated one. You can display the calculated value in an expression box for users to use as a reference.
If this value then needs to be used in other calculations, you can use this expression, which will take on the value of the calculated field if the user-editable one is blank, and the value of the user-editable field if it's not blank:
concat(substring(calculatedField, 1, (userField = "") * 100), substring(userField, 1, (userField != "") * 100))