I don't use BCC or really understand why anyone would; I use clang, and just produce .o's.
The verifier is definitely annoying, especially at first, but I found myself sort of quickly working out the verifier's expected idiom, and a lot of it can be wrapped with macros.
All of this drama pales in comparison to writing freestyle C code in the Linux kernel without causing random panics.
I've personally never found obtaining a working kernel tree to be difficult, certainly easier than a working BCC toolchain. Or all of the various compiler flags needed for clang not to emit code incompatible with the verifier.