What syntax category a character belongs to depends on the major mode: in text mode %
has syntax word
but in say C-mode
it has syntax punctuation
. What you want interpreted as a word varies depending on the "language" of a buffer (which is partly reflected in its mode - that's why syntax tables are mode specific): the syntax tables try to account for that, not always satisfactorily from every POV, but they provide a decent compromise (and one which you can modify - with care). See Syntax tables in the Elisp Reference manual.
E.g. in text mode, when you write "I am 100% certain that this is a bug", you probably want forward-word
to go past the %
sign: the 100%
is a single "word". Similarly in "I paid $2.00 for this lousy coffee?", the $2.00
should be considered a single "word".
IOW, it has nothing to do with what characters can be used in function names in Emacs Lisp.