The rule is that punctuation marks comprising two parts, i.e. colon, semicolon, question mark and exclamation mark, should have a space before and after.
As for the reason for that, off the top of my head, it could be because contrary to English, the French language has a lot of words ending in the letter i, which could be mistaken for an exclamation mark if the ink/printing quality is not very good. But this is only a random guess.
Having read QWERTY, I suspect it descends from the days of typewriters:
In early designs, some characters were produced by printing two symbols with the carriage in the same position. For instance, the exclamation point, which shares a key with the numeral 1 on modern keyboards, could be reproduced by using a three-stroke combination of an apostrophe, a backspace, and a period. A semicolon (;) was produced by printing a comma (,) over a colon (:). As the backspace key is slow in simple mechanical typewriters (the carriage was heavy and optimized to move in the opposite direction), a more professional approach was to block the carriage by pressing and holding the space bar while printing all characters that needed to be in a shared position. To make this possible, the carriage was designed to advance forward only after releasing the space bar.
So the convention must have stuck for French and not for English.