1. What is the function of the database cache in a non-pruned node? Given plenty of non-volatile memory space, is there an ideal value?
During the initial block download, Bitcoin Core validates all of the blocks and builds the chainstate as it synchronizes. There are a lot of operations within the chainstate as the blocks are being synchronized and hence they're constantly being added and removed. Hence, dbcache will cache the chainstate to ensure speedy access of it in the memory and hence it allows the client to synchronize faster.
The ideal value is less than your ram, ensure that you're leaving enough ram for your OS and other processes. I personally go for 4gb when I've got an 8gb computer.
2. Ditto for "Number of script threads verifications."
Don't have to change the value. Bitcoin Core automatically uses as many threads as your CPU have, minus one.