So what is the subtile difference between the "lib" directory & "add to build path" vs "libs" directory?
Android's current build tools (Eclipse and command-line) expect that JARs are in a libs/
directory. It will automatically add those JARs to your compile-time build path. More importantly, it will put the contents of the JARs into your APK file, so they will be part of your run-time build path.
Using lib/
and mucking with your build path manually will solve the compile-time problem, but then your JAR contents are not in your APK and therefore will not be available to you at runtime.