What context is this being used in? Attribute rules can be configured to "fire" on new features only. Or is this for a smart form for Field Maps or the Edit widget in a web tool?
Anyway, a simple method would be to first check if the field is empty first, and to stop executing if a value already exists.
if (IsEmpty($feature['your_field'])) {
// put the rest of the expression in here
} else {
// return the original value otherwise
return $feature['your_field']
}
Adding to the above poster's comment, if you're doing this in a smart form/Field Maps, then you can just edit the final line to be this:
IIF($editcontext.editType == "INSERT", nearStation.station_name, destinationField)
With destinationField being the field you're writing the station name to. Which will mean that if a point is being added for the first time it will do the intersect and populate the field with the closest station, but if it's an update/edit then it just returns the current field value.