Vim (or NeoVim) will always load all syntax files it finds for a specific filetype.
To allow you to override the syntax configuration bundled in Vim runtime, those scripts typically include a check at the top that will skip the execution of the rest of the script if a variable is already set. For syntax files, that is typically the buffer-local variable
b:current_syntax being set.
So you can override the shipped syntax by having your script run early in
'runtimepath' (as you're already doing) and making sure that the
b:current_syntax variable is set (to the name of the filetype used for syntax) at the end of the execution of your script.
If you don't like a distributed syntax file, or you have downloaded a new
version, follow the same steps as for
mysyntaxfile above. Just make sure
that you write the syntax file in a directory that is early in
Vim will only load the first syntax file found, assuming that it sets
html.vim type, there's one extra caveat, that it also checks for a
main_syntax variable, which is used when
syntax/html.vim is being sourced as part of another filetype that embeds HTML (such as PHP!)
See this code snippet:
" quit when a syntax file was already loaded
let main_syntax = 'html'
So, in order to override the bundled
syntax/html.vim, you need to make sure that your script sets
"html"), and that it does not set (or
main_syntax variable, to ensure the bundled script will finish execution early.