Moons ago I ran into a similar problem with some FTP clients that would crash if the filename being downloaded contained the % character. The fix was to edit out the character when selecting the SAVE AS filename.
Possibly these characters are being interpreted by Firefox as a token, wildcard, internal command, or delimiter of some sort? Almost sounds like it's being interpreted as an EOF marker.
Then there's also the issue of cross-platform compatibility. Firefox runs on multiple operating systems. Is the % symbol an illegal character in some other OS filesystem that Firefox is coded to intercept?
FWIW I seem to remember it being told it's a good idea not to use the characters !:@#<>$%^&* in your filenames even if your OS permits them.