I'm not sure about this but it seems to me that "not good" always has a firm negative connotation, i.e. it is equivalent to "bad", whereas "not bad" doesn't necessarily have a firm positive connotation; it can lean towards "decent" or even "mediocre".
For example if you found a dish to be mediocre/slightly above mediocre "not bad" would be a fitting description. But if you found it to be mediocre/slightly below mediocre "not good" seems to be too strongly negative to aptly describe it.
So my question is: is my interpretation correct? And if so, why is this the case, since I'd expect these two phrases to be symmetric, as in, direct opposites.