There is a lot of overlap in the meaning.
"못하다" can mean "you can't do something because you haven't learnt how to do" while "할수없어요" can have the same meaning as "못하다" or it has sense of "you are not able to do something because you're not in the mood for some other reasons"
for example,
저는 수영를 못해요 = I can't swim(because you haven't learnt how to swim)
저는 수영을 할수 없어요 could mean...
1) I can't swim(because I haven't learnt) or
2) I am not in the mood to swim for some reasons like.....
you didn't bring your swimming suit or you're tired, etc.
(in here, you know how to swim^^/)
\^o^/