“Clipping” error bars is just “fixing” (not even) the extreme cases. If you need to clip them it means that your error calculation is inappropriate for your histogram calculation. As you already said, the proper way to deal with this is to use TGraphAsymmErrors, and algorithms like e.g. TGraphAsymmErrors::BayesDevide().