I found the solution myself:
The EditValue method of the custom editor should return a new object, not the passed in value object. Then the PropertyGrid automatically refreshes the other properties as well.
I did not need to use the RefreshProperties attribute anywhere.