Destructors make less sense when you consider that there is no guarantee of when the object will be deleted. It makes it tough to use RAII principals when you cannot control the lifetime of the object itself (it is completely up to the garbage collector).The most glaring, and in my view, unforgivable, omission from these languages is the deterministic destructor. It really irritates me, honestly.
The above paragraph only relates to Java as I've not done much with C#. I remember hearing that C# does have destructors though, so maybe it doesn't suffer from the same lack of RAII.