Why does Globalize
Short answer thinking-out-of-the-box: Because current Globalize lacks a parser feature called "Loose Matching" https://github.com/jquery/globalize/issues/292.
Short specific answer: Because space and no-break space are two different characters. The "space" of the fr-CA grouping separator isn't a regular space (bytecode 32 = hex 20), but it's a no-break space (bytecode 160 = hex A0). Try "sanitizing" your input with
input.replace( "\x20", "\xa0" ) before providing it to the parser as a workaround.
You can find detailed information at https://github.com/jquery/globalize/issues/288
I hope that helps :)