Ну я вижу это так.
При переводе из ББ в HTML мы четко сами прописываем - что на что заменять. Если мы что-то упустим при замене, то скорее всего просто на вывод уйдет не замененный ббкод.
Если у нас HTML изначально, то мы его чистим. Если мы что-то упустим при чистке - на выход уйдет html, который может наделать бед. С этой точки атаковать удобнее - известен код чистки, можем проанализировать, найти багу и запостить эксплуатирующий ее HTML.
Наверно и при замене bb в html можно накосячить, не спорю, но как-то мне кажется, что вероятность меньше. В том числе и из-за меньшего объема работы, так как bb изначально проще.