I've been working quite a bit with @RemoteAction methods and have noticed there seem to be a few inconsistencies between what's allowed in the apex JSON.(de)serialize methods and what the automatic serialization/deserialization performed by @RemoteAction methods does.
Is there any authoritative list of what the different capabilities and limitations are of each? If not, what differences have you found?
As an example JSON.deserialize will not allow a type that contains a member of type object, while @RemoteAction parameters will deserialize any type of primitive that JSON supports into the object property.