As a workaround, I manually call a cleanup method immediately before clearing the last reference to the object, but that's not as elegant.
The C# destructor syntax doesn't work in JS. You can use Finalize(), but you get a warning about how overriding Finalize is bad practice and you should use the destructor syntax (yet there's no hint as to what the destructor syntax might be, if in fact it exists).
However, I think it's a moot point, because Destroy is from MonoBehaviour, and calling MonoBehaviour.Destroy in Finalize (or in the destructor in C#) in a class that doesn't inherit from MonoBehaviour results in a cryptic run-time error message anyway. So as far as I know, the whole idea isn't possible.