API: DataFrame.__and__ vs Series.__and__ fillna behavior mismatch
Based on tests.series.test_operators `test_logical_ops_df_compat`

```
# GH#1134
s1 = pd.Series([True, False, True], index=list("ABC"))
s2 = pd.Series([True, True, False], index=list("ABD"))

exp_ser = pd.Series([True, False, False, False], index=list("ABCD"))
res_ser = s1 & s2
tm.assert_series_equal(res_ser, exp_ser)

# DataFrame doesn't fill nan with False
exp_frame = pd.DataFrame({"x": [True, False, np.nan, np.nan]}, index=list("ABCD"))
res_frame = s1.to_frame() & s2.to_frame()
assert_frame_equal(res_frame, exp_frame)
```

Is there still a compelling reason to keep this mismatched behavior?