Very interesting questions, I had to check it out myself.
1) Why does ObservableObject.Set return true and not ViewModelBase.Set? This is an oversight and will be fixed in V4 RTM.
2) Is there a reason why ViewModelBase.Set does not call through OO.Set? Mostly this is because of the Broadcast feature that is only in the VMBase class. This feature allows you to specify that in addition to setting the value, you also want to send a PropertyChangedMessage
using the VMBase's MessengerInstance.
3) ViewModelBase.Set not raising PropertyChanging event was an oversight too. Not sure what i was thinking :)
Cheers and thanks a lot for the feedback.