Some documentation on Mozilla preferences can be found here.
The way the prefs subsystem works is to put together a list of all pref files from the app and all extensions, and then apply them in reverse alphabetical order. That means that the alphabetically first files get precedence since later applied files override the settings in previously applied files.
For Penelope's purposes it is necessary to have some default settings that take precedence over the Mozilla platform and Thunderbird, but not over the user's settings. So the source code for Penelope settings are stored in
penelope/base/prefs/all-penelope.js, and during the build process get moved in to the Penelope extension with the same file name. This allows Penelope preferences to override the
all-thunderbird.js preferences of Thunderbird. The tradition in Mozilla is that
all.js has the last word, so this makes
all-penelope.js take precedence over the rest of the Thunderbird and Mozilla preferences files but still retains
all.js's place at the top. The user's
prefs.js file has precedence over all of these, and finally the special
user.js has the final say-so.