Fix/26837 format array
- [x] closes #26837
- [x] tests added / passed
- [x] Ensure all linting tests pass, see [here](https://pandas.pydata.org/pandas-docs/dev/development/contributing_codebase.html#pre-commit) for how to run them
- [x] whatsnew entry

The basic strategy is to move `format_array` from pandas.io.formats.format to `ExtensionArray._format_array`. By default, we convert to ndarray and then use the existing formatting mechanism on the ndarray.