B-frame basics 

IIRC, all encoders that I know of (mencoder, mpeg2enc & ffmpeg) do not use b-frames by default. Are b-frames "evil"?

My casual observation is that all commercial products use b-frames. Is that so? why they choose to use b-frames?

Why b-frames are not enabled by default?

If I want to use b-frames, what is the recommended value for it. What parameter should I use for mpeg2enc?

B-frame basics 

From mpeg2enc man page:

-R|--b-per-refframe 0..2

Specify how many bi-directionally (B type) difference-encoded frames should be encoded between reference (I or P) frames. The default is 0 except for VCD encoding where it is 2 B frames as required by the standard. Experts differ on how much using B frames improves compression. In practice unless you have really clean material they tend to be fairly useless and sometimes even harmful. Encoding is significantly faster and uses less memory if no B frames are encoded and compression is rarely more than marginally worse.