学校では、can = be able toで「できる」だと習いますが、全く同じ意味の表現は2つと存在しません。表現が違うということは、意味が違うのです。
では、どのように意味が違うのでしょうか?
そもそも、この2つは「並列」に並べられるものではありません。
なぜなら、canの方が楽だからです。「I can swim.」だったらわずか3単語で済むのが、「I'm able to swim.」だともう少し長くなってしまいます。つまり、一番楽で、一番便利に表現できるのがcanなのです。
日本語で「泳げる、泳げない」と言った時に、以下のようにいろんな解釈ができるはずです。
・カナヅチでないかどうか(≒能力)
・ケガや疲れがないかどうか(≒体調)
・水が冷たすぎないかどうか、クラゲがいないかどうか(≒状況)
・怖くないかどうか(≒心理)
これらを全て含む形で、簡単に表現できるのがcanだとお考えください。ですから、
I can't swim.
という発言があった時には、
「(カナヅチで能力的に)泳げない」
「(ケガをしているから体調的に)泳げない」
「(水が冷たすぎるなど状況的に)泳げない」
「(水が怖いなど心理的に)泳げない」
といった様々な可能性がありうるのです
それに対して、be able to は「能力」を表すabilityの形容詞形ableを含んでいます。ですから、多くの場合、能力などの話になりやすいと言えます(ケガなどの体調は、一時的に能力が奪われている、ということでableの範疇だとお考えください)。ですから、
I'm not able to swim.
と発言したとすると、おそらく
「(カナヅチで)泳げない」
「(ケガをしているから)泳げない」
などと判断されるでしょう。I can't swim.ではなく、I'm not able to swim.という言い方を敢えてしていることになるから、能力の話であることを強調するようなニュアンスになりやすいのです。