BUG: MultiIndex with nan values obtained by `groupby` behaves different to MultiIndex.from_tuples()
- [x] I have checked that this issue has not already been reported.

- [x] I have confirmed this bug exists on the latest version of pandas.
  I checked in 1.1.1

- [ ] (optional) I have confirmed this bug exists on the master branch of pandas.

---

#### Code Sample, a copy-pastable example

```python
In [11]: import pandas as pd
    ...: import numpy as np
    ...: 
    ...: df = pd.DataFrame({
    ...:     'animal': ['Falcon', 'Falcon', 'Parrot', 'Parrot'],
    ...:     'type': [np.nan, np.nan, np.nan, np.nan],
    ...:     'speed': [380., 370., 24., 26.]
    ...: })
    ...: speed = df.groupby(['animal', 'type'], dropna=False)['speed'].first()

In [12]: speed
Out[12]: 
animal  type
Falcon  NaN     380.0
Parrot  NaN      24.0
Name: speed, dtype: float64

In [13]: speed.index.levels
Out[13]: FrozenList([['Falcon', 'Parrot'], [nan]])

In [14]: speed.index.codes
Out[14]: FrozenList([[0, 1], [0, 0]])

In [15]: # Reconstruct same index to allow for multiplication.
    ...: ix_wing = pd.MultiIndex.from_tuples(
    ...:     [('Falcon', np.nan), ('Parrot', np.nan)], names=['animal', 'type']
    ...: )
    ...: wing = pd.Series([42, 44], index=ix_wing)

In [16]: wing
Out[16]: 
animal  type
Falcon  NaN     42
Parrot  NaN     44
dtype: int64

In [17]: wing.index.levels
Out[17]: FrozenList([['Falcon', 'Parrot'], []])

In [18]: wing.index.codes
Out[18]: FrozenList([[0, 1], [-1, -1]])

In [19]: 

In [19]: 

In [19]: speed * wing
Out[19]: 
animal  type
Falcon  NaN    NaN
        NaN    NaN
Parrot  NaN    NaN
        NaN    NaN
dtype: float64


```

#### Problem description

I'm trying to perform combine two series (say multiplication for now). One of them is obtained by a groupby aggregation (say `first`) and the other series is constructed manually. Both series have a MultiIndex which _should_ be the same and a multiplication should work fine. However, it seems that `groupby(..., dropna=False)` creates a different MI which causes the operation to return an unexpected result.

#### Expected Output

I would expect the result of `speed * wing` to be

```
Falcon  NaN     15960.0
Parrot  NaN     1056.0
```

#### Output of ``pd.show_versions()``

<details>

INSTALLED VERSIONS
------------------
commit           : f2ca0a2665b2d169c97de87b8e778dbed86aea07
python           : 3.8.5.final.0
python-bits      : 64
OS               : Linux
OS-release       : 5.7.17-200.fc32.x86_64
Version          : #1 SMP Fri Aug 21 15:23:46 UTC 2020
machine          : x86_64
processor        : x86_64
byteorder        : little
LC_ALL           : None
LANG             : en_AU.UTF-8
LOCALE           : en_AU.UTF-8

pandas           : 1.1.1
numpy            : 1.18.4
pytz             : 2019.3
dateutil         : 2.8.1
pip              : 20.2.1
setuptools       : 47.3.1
Cython           : 0.29.17
pytest           : 5.1.1
hypothesis       : None
sphinx           : None
blosc            : None
feather          : None
xlsxwriter       : 0.9.6
lxml.etree       : None
html5lib         : None
pymysql          : None
psycopg2         : 2.8.3 (dt dec pq3 ext lo64)
jinja2           : 2.11.2
IPython          : 7.17.0
pandas_datareader: None
bs4              : None
bottleneck       : 1.3.1
fsspec           : None
fastparquet      : None
gcsfs            : None
matplotlib       : None
numexpr          : 2.7.1
odfpy            : None
openpyxl         : 1.8.6
pandas_gbq       : None
pyarrow          : 0.17.1
pytables         : None
pyxlsb           : None
s3fs             : None
scipy            : 1.4.1
sqlalchemy       : 1.3.12
tables           : 3.6.1
tabulate         : None
xarray           : None
xlrd             : 1.2.0
xlwt             : None
numba            : None


</details>
