PERF: tighten _should_compare for MultiIndex
- [ ] closes #xxxx
- [ ] tests added / passed
- [ ] Ensure all linting tests pass, see [here](https://pandas.pydata.org/pandas-docs/dev/development/contributing.html#code-standards) for how to run them
- [ ] whatsnew entry

is there a specific benchmark that this improves? > is there a specific benchmark that this improves?

No.  The motivation is yak-shaving that traces back to getting rid of _convert_list_indexer @jreback gentle ping (a whole mess of MultiIndex PRs yak-shaving inconsistencies) @jbrockmendel  This PR seems to have introduced a bug. I verified this with the code below and a bisect.

```
import pandas as pd
mi = pd.MultiIndex.from_product([["a","b","c"],[1,2,3],["z","y","x"]])
df = pd.DataFrame(index=mi,dtype=float)
mi2 = pd.MultiIndex.from_product([["a","b","c"],[1,2,3]])
s = pd.Series(index=mi2, dtype=float)
s.iloc[:]=3.14
df["new"] = s
print(df)
```

now returns 
```
        new
a 1 z  NaN
    y  NaN
    x  NaN
  2 z  NaN
    y  NaN
    x  NaN
  3 z  NaN
    y  NaN
    x  NaN
```

Before this patch is did a broadcast assignment to the remaining MultiIndex levels, i.e..


```
        new
a 1 z  3.14
    y  3.14
    x  3.14
  2 z  3.14
    y  3.14
    x  3.14
  3 z  3.14
    y  3.14
    x  3.14
``` xref #40186