BUG: Array.__setitem__ failing with nullable boolean mask
- [x] closes #31446 
- [x] tests added / passed
- [x] passes `black pandas`
- [x] passes `git diff upstream/master -u -- "*.py" | flake8 --diff`
- [x] whatsnew entry

@charlesdong1991 I haven't looked closely, but you may need to skip that setitem test for PandasArray. There are some issues with setting sized values in an ndarray. ahh, thanks a lot for letting me know!! @TomAugspurger 

i am indeed struggling with one failed test which is caused by `PandasArray`
seeing the error message, looks like original array is `pd.array([0, 0, 0, (3,), (4,)])`, while somehow `expected` became: `pd.array([(0,), (0,), (0,), (3,), (4,)])`.

I will skip this for now, and pls let me know if you think a new issue needs to be created or not.

just FYI, the only failed test 
```

self = <pandas.tests.extension.test_numpy.TestSetitem object at 0x14d3eea20>
data = <PandasArray>
[    0,     0,     0,  (3,),  (4,),  (5,),  (6,),  (7,),  (8,),  (9,), (10,),
 (11,), (12,), (13,), (14,...(87,),
 (88,), (89,), (90,), (91,), (92,), (93,), (94,), (95,), (96,), (97,), (98,),
 (99,)]
Length: 100, dtype: object

    def test_setitem_nullable_mask(self, data):
        # GH 31446
        arr = data[:5]
        expected = data.take([0, 0, 0, 3, 4])
        mask = pd.array([True, True, True, False, False])
        arr[mask] = data[0]
>       self.assert_extension_array_equal(expected, arr)

pandas/tests/extension/base/setitem.py:205: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
pandas/_testing.py:1057: in assert_extension_array_equal
    obj="ExtensionArray",
pandas/_libs/testing.pyx:65: in pandas._libs.testing.assert_almost_equal
    cpdef assert_almost_equal(a, b,
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

>   raise_assert_detail(obj, msg, lobj, robj)
E   AssertionError: ExtensionArray are different
E   
E   ExtensionArray values are different (60.0 %)
E   [left]:  [(0,), (0,), (0,), (3,), (4,)]
E   [right]: [0, 0, 0, (3,), (4,)]
``` thanks @charlesdong1991 