We treat a placeholder as one word as well because even though the placeholder itself doesn't need to be translated, often times translators will have to take care of them to provide accurate translations.
For examples, sometimes translators will have to rearrange the order of words, e.g. "Hello, %@" will need to be rearranged as "@, 你好" in Chinese.
And for some phrases like "Eat %d Melons", in languages like Chinese, translators will have to add in the unit for the noun, e.g. Melons = 蜜瓜 but %d Melons =%d個蜜瓜 where 個 is the unit for 蜜瓜.
Thus, we will count a placeholder as one word to compensate the effort of translators to take care of them.
Same concept applies to HTML tags or any words or numbers that need not to be translated.