I'm sorry about these differences. I know it can be confusing, and I have plans to fix it in the near future (not just for the sake of the differences, but for better performance too).
The native calling conventions currently have to manually release handles they receive, except if you register the function with auto-handles. For the generic calling conventions, the asIScriptGeneric is the owner of the handle and will automatically release it when the function returns.
As for the factory, you shouldn't change your initial refCount, instead use the appropriate method of the asIScriptGeneric to return the handle. I personally prefer GetAddressOfReturnLocation, but you can use SetReturnAddress as well.
void Factory_MyClass(asIScriptGeneric *gen){ MyClass *cl = new MyClass(); *((MyClass**)params->GetAddressOfReturnLocation()) = cl;}
You may also want to take a look at the auto wrapper add-on. It can greatly simplify your work as you won't have to manually write all the wrappers.