In practice there is no difference, they can be used interchangeably, but isle is archaic. Anything called isle can also be referred to as an island.
I had thought that isle was just an archaic version of island, but it turns out the words are actually not related:
1590s, earlier yland (c.1300), from Old English igland "island," from ieg "island" (from Proto-Germanic *aujo "thing on the water," from PIE *akwa- "water;" see aqua-) + land "land." Spelling modified 15c. by association with similar but unrelated isle. An Old English cognate was ealand "river-land, watered place, meadow by a river." In place names, Old English ieg is often used of "slightly raised dry ground offering settlement sites in areas surrounded by marsh or subject to flooding" [Cambridge Dictionary of English Place-Names]. Related: Islander.
late 13c., from Old French ile, earlier isle, from Latin insula "island," of uncertain origin, perhaps (as the Ancients guessed) from in salo "(that which is) in the sea," from ablative of salum "the open sea." The -s- was restored first in French, then in English in the late 1500s.