According to this Github page the shims include all monkey-patches that faithfully represent the ES5 features.
In other words: you can use the features provided by these files as if you were using ES5 proper.
The shams, however contain those features that can not be emulated with other code. They basically provide the API, so your code doesn't crash but they don't provide the actual functionality.
Which ones do you need? That depends on how you write your code. If you only use features provided by the shims, then include that. If you also want to (optionally) use features from the shams, then you need both of them.
The Wikipedia page on polyfills describes it in a pretty succinct fashion as well.
Thanks. Here is what I gather from the two sources mentioned above: From ES5 github repo... "In many cases, this means that these shams cause many ES5 methods to silently fail. Decide carefully whether this is what you want." From wikipedia... "es5-sham.js contains partial implementations of the other methods which rely too much on the underlying engine to work accurately." I can also see which features are supported by the sham/shim in the repo. What would be even more helpful, is if someone knows which features normally supported by the shim will break when adding the sham.
I haven't tried that specifically, but if anything in the shams broke anything in the shims I'd consider that a bug.