using subsurf modifier to object with boolean undoes boolean
The reason might be that the Sudivision Surface modifier creates additional geometry that makes the boolean fail because of overlapping vertices/edges/faces. Just try to slightly move the boolean object to avoid that.