Why use JSON.serialize in @RemoteAction return statement

I can’t figure out why in an @RemoteAction method you would want to JSON.serialize the object being returned? I see this in a lot of code and I’m trying to understand the reasoning. I thought @RemoteAction automatically serialized it for you. In fact when doing this it appears you must decode using htmlDecode since it’s double encoded, once by Javascript Remoting and again by JSON.serialize method.