Hi,
Technically there is not much difference between the two, although I would use the ReturnDefualtImplementation option. The other way is not the "proper" way to go.
Regarding your second question. You use Recorder.return(obj) when you want to return your own specified value. i.e. In order for the test to pass you need to return a specific value/instance. Returning default implementation is used when you don't really care what is returned from the method (mainly since its not used afterwords).
Hope this helps.