>> "Currently Deactivate() does not deactivate the product when network is not available and does not return any error code to indicate this condition."
What language are you using? In C/C++ Deactivate() will return TA_E_INET. On other languages it will throw an exception. So don't swallow exceptions.
>> "So I need to call IsActivated() right after to evaluate if Deactivate() call was successful."
No.
>> "It would be nice to have proper error code from Deactivate() when deactivation is not successful."
It does. More information is needed if you're still having problems. Starting with a code snippet.