Douglas Harper's Etymology Dictionary
sound represented in Old English by -sc- (fisc "fish"), which originally was pronounced "-sk-" but which by late Old English had softened to "-sh-." Modern English words with -sc- mostly are imports (generally Scandinavian).\n
\nThe "sh" sound did not exist in Old French, therefore French scribes after the Norman conquest often represented it with -ssh- in medial and final positions, and sch- in initial positions (schape, schamful, schaft for shape, shameful, shaft). But the spelling -sh- has been standard since Caxton, probably as a worn-down form of Middle English -sch-.\n
\nIn some East Anglian texts from 14c.-15c., x- is used (xal, xulde for shall, should), which would have given the language a very different look had it prevailed, but the London-based sh- ended up as the standard form. The same Germanic sound has become, by natural evolution, modern German and Dutch sch-, Scandinavian sk-.