By all means graceful failure is a viable option for non-critical stuff, but when it comes to something as basic as missing content I think it's better to yell "hey! something wrong here! fix me please!" at the user. That way we get the user with a correct setup as soon as possible and avoid all manner of headaches later on.
Hypothetical situation: say we have version 1 and version 2 of a mod. They're broadly compatible but version 2 has some additional content and an updated progs.dat to reflect it. The user somehow contrives to be running the version 2 progs.dat against version 1 content (say by getting confused and copying, pasting and renaming PAK files all over the place).
I'd say it's better to crash to the console with an error than to let the user contine running (and possibly crash the full engine later on). That way you're telling the user that they have stuff set up wrong, they can get it set up right, and they can learn how to set things up right so that it doesn't happen again.
Where this falls down is that users generally don't read error messages, of course.
