The United States flag represents the United States. We exist. We are a nation. We have our history and much of it is not good. There are valid reasons why a person would not like the American flag, but all nations have flags and use them mostly in the same ways. Because we are actually an existing nation we can work to become better and to make our flag represent better things. But ultimately we are who we are and we have to accept that and live with it. If someone is offended by our flag then they can figure out how they want to deal with that.
That is different than flying the flag of a nation that no longer exists, one whose existence was mostly about preserving the "state's rights" to allow slavery. That history is sealed and cannot be changed. The Confederate States existed to enable slavery as an industrial institution to continue. So if you're flying that flag you are showing your support for a nation that was soundly defeated by the United States and eliminated from existence, and to support a nation whose sole purpose of being was to preserve slavery is to show some fondness and nestalgia for slavery.
Much the same is true for the Nazi flag. You can't fly that flag and say it's because you thought they were really snappy dressers.