Moving a comment to an answer, as no one else wanted to add anything.
It is very easy to modify the Viterbi decoding algorithm to accommodate erasures. You use the trellis of the original convolutional code. You simply treat the punctured bits as unknown (=erased) bits that are at Hamming distance 1/2 from both 0 and 1. Or, if your channel model is AWGN as opposed to BSC, then you should treat the punctured bits as being at the midpoint between 0=+1 and 1=−1 (or whatever signal levels they were mapped to). If you use LLRs, then the log-likelihood ratio of a puunctured bit should be set to zero reflecting complete uncertainty.
Alternatively you can ignore the erased positions altogether, as all the path penalties are affected equally, so an erasure will not have an impact on the decision. Of course, you still take into account the other bits on the output label of every edge.