Correct. "Set Variable Value" does not alter the default value of the variable. It sets the run-time value of the variable to whatever you have determined in the "Set Variable Value" operation. That is by design. If you want to alter the default value of a keyword test variable, that is done at design time in the keyword test editor.
As for Project variables... This depends upon what "kind" of project variable it is. There are actually two kinds: Temporary and Persistent. Temporary variables have a "Default" value much like what is done with the Keyword test variables. It's set at the time the variable is created and is used if the variable value is not updated by any code. However, code itself does not change the default value.
Persistent project variables, however... their "Default" value is not exactly a default. It is what is set in the "Local" value when the variable is first used. If you set the variable value during code, that local value changes and is persisted from test run to test run.