BUG: DataFrame.explode fails with str dtype
- [ ] closes #xxxx (Replace xxxx with the GitHub issue number)
- [ ] [Tests added and passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#writing-tests) if fixing a bug or adding a new feature
- [ ] All [code checks passed](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit).
- [ ] Added [type annotations](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#type-hints) to new arguments/methods/functions.
- [ ] Added an entry in the latest `doc/source/whatsnew/vX.X.X.rst` file if fixing a bug or adding a new feature.

This operation works on all other dtypes, e.g.

```python
df = pd.DataFrame({"a": [1, 2]})
print(df.explode(column="a"))
#    a
# 0  1
# 1  2
```

@datapythonista 

> Btw, did we have problems before to have the `result is not df` assert? I haven't used it before, it'd be good to understand in which tests it make sense. Thanks!

I think it makes sense to check this when we have a no-op that should return a copy. If the operation modifies the data (which is the case for the vast majority of tests), I don't think it needs to be checked. @datapythonista - fixed up the docs build, this should be ready. Owee, I'm MrMeeseeks, Look at me.

There seem to be a conflict, please backport manually. Here are approximate instructions:

1. Checkout backport branch and update it.

```
git checkout 2.3.x
git pull
```

2. Cherry pick the first parent branch of the this PR on top of the older branch:
```
git cherry-pick -x -m1 73db25d585a12e587beffef83449dbdd5d16d0f6
```

3. You will likely have some merge/cherry-pick conflict here, fix them and commit:

```
git commit -am 'Backport PR #61623: BUG: DataFrame.explode fails with str dtype'
```

4. Push to a named branch:

```
git push YOURFORK 2.3.x:auto-backport-of-pr-61623-on-2.3.x
```

5. Create a PR against branch 2.3.x, I would have named this PR:

> "Backport PR #61623 on branch 2.3.x (BUG: DataFrame.explode fails with str dtype)"

And apply the correct labels and milestones.

Congratulations — you did some good work! Hopefully your backport PR will be tested by the continuous integration and merged soon!

Remember to remove the `Still Needs Manual Backport` label once the PR gets merged.

If these instructions are inaccurate, feel free to [suggest an improvement](https://github.com/MeeseeksBox/MeeseeksDev).
                 Backport -> https://github.com/pandas-dev/pandas/pull/61699