They both has exactly the same meanings. You can use any one.
They are a high form. So, you use 감사합니다 or 고맙습니다 to someone who are older than you, strangers, when you are talking in the formal situation. (In a meeting, company, classroom, etc.)
There are of course a low form that you use to your friends or younger people. If you are talking to a younger person but you don't know her/him well, then you use a high form. But you know the person well, and you are close to them. You use a low form. You can just say 고마워.(Komawuo) You don't say 감사해(Kamsahae). It sounds weird. Even if you hear it, it will be only in a poem or a song. People just don't use it.