If you know that you are designing a boolean "cutter" best practice is to design it a little longer than you need (so that the cutter fully penetrates the object to be cut and sticks out of the outer surfaces a bit). Rhino has trouble with concurrent surfaces and edges sometimes (V4 is a good bit better than V3).
If you are having consistent failures, try running the Intersect command between the objects - with closed polysurfaces you should get one or more closed loops. If even one of those loops is open, the boolean will fail.
Remember also that anything you can do with a boolean operation can also be done with manual trimming and joining. Sometimes this is simply the easiest thing to do rather than going to look for why the boolean failed.
Good to know people are reading the Wiki FAQ to find answers. --ch