I was able to get this to work two ways:
Set the Overlap threshold to 0
I don't know exactly what this setting does or why it works. I suspect the setting might be related to this old carve bug, given that the bmesh method was recently added to replace carve, but that doesn't explain why it fixes anything in this case. You might want to report a bug with this file, as I'm pretty sure the bmesh method should work without messing with this setting.
Use the Carve boolean method
Your cutter object has a negative Z scale, which, consequently, means the normals are inverted despite appearing correct. This makes carve act up (bmesh is fine with it though). To fix it:
- Apply the scale with ⎈ CtrlA
- Switch to edit mode (↹ Tab)
- Select all (A)
- Recalculate normals (⎈ CtrlN)