You say you don't want to have to "manually create a new table and use with-syntax-table for every function in my config or change the current table using modify-syntax-entry."
I think you have to do either that or give yourself a more general function that you can apply to accomplish the same thing.
Here's a particular command, just for ...
1st: Dealing with your actual problem of setting the syntax for ?_ in modes derived from fundamental-mode.
There are no commands setting the syntax table in fundamental-mode. Therefore, it uses the (standard-syntax-table). If the syntax for ?_ is not defined in a mode it uses the entry in its inherited syntax table. By default, (standard-syntax-table) is ...
The above code will indeed set something for face. @Lindydancer helped me realize that I had set font-lock-defaults with the second parameter (keywords-only) of the list as t).
Unsetting keywords-only fixed the above and enabled highlighting.