Actually, "cám ơn" is an informal variation of "cảm ơn" and it's often used in daily conversations (nationwide, not only in Southern dialect like TehVanach said). However, in formal speech and text, you should use "cảm ơn" instead of "cám ơn". To me, I always use "cảm ơn" even when I talk.
Some Vietnamese words have the same variation, for example: phản ảnh (original) and phản ánh (derived).
Which is why I said it's the spoken form in Southern Vietnamese although both can be considered formal by Southern speakers. It most likely arose out of tone sandhi.
Edit: It's also because modern written Vietnamese is largely based on Hanoian Vietnamese after they ousted the Southern regime.