Question: I've been developing in Eclipse and every now and then I come across having to add JARs to WEB-INF\lib. My question is why sometimes I need to add them to the build path and sometimes I can just dump them in there.

Answer: 
If you need them at compile time, they need to be in the build path. If you only need them at runtime, adding them to WEB-INF\lib is sufficient.
They need to be in the build path if any of your code explicitly references a Class in the jar. Sometimes jars you include reference these other jars that you don't explicity reference. Those jars do not have to be in your build path but they do need to be in your WEB-INF/lib directory.