[verb ない-form] + ことはない [i-adj 〜い → 〜く] + ないことはない [na-adj] + で(は)ないことはない [noun] + で(は)ないことはない
ないことはない is a double negative: "it's not that it isn't so". The speaker grants that something is true or possible, but without enthusiasm, and a reservation usually follows with けど or が. It goes after the ない-form of a verb, very often a potential one.
Without the first ない, ことはない is a different pattern: "there's no need to". The ない-form in front is what turns it into a hedged yes.
An い-adjective goes into its く-form before ないことはない; a な-adjective or a noun takes で(は).
These are other shapes of the same hedge.
With も in place of は the meaning is the same, and the hedge is a little softer. In conversation you hear it at least as often.
In speech the particle drops: ないことない. なくはない means the same thing.