I think it's a bunch of bull, but I do think are a few exceptions.
If you are paying monthly dues to your gym and your instructor can promote you, having to pay is b.s. This person should be observing your performance on the regular, so even having "testing" is junk in my mind. Eyes on week in and week out will let an instructor know when you are ready, and when you are ready, that instructor should promote you. They've already gotten your money every month, they shouldn't require any more.
Now, for my exceptions.
1. If you don't pay monthly dues, because you are part of a "club" more so than a gym that doesn't run for profit. I see this a lot in judo as opposed to BJJ. A testing/promotion fee can add money to allow for upkeep and the purchase of new equipment, along with buying products to keep the mats clean/sanitary, print more posters/flyers, or whatever. Those fees should be used towards the betterment of the club.
2. Your gym is part of an association, and a high level belt will be flying in to teach a seminar/do promotions. These funds should be used to help offset the cost of having to fly/board said "master", and not for the financial benefit of the local instructor. If it is a seminar, the seminar fees should cover any stripes/belts awarded.
My first serious BJJ school charged a $50 testing fee per stripe, and our black belt wasn't allowed by his instructor to award belts, only stripes...so if we wanted to belt up we'd have to travel down to wherever the "master" was at and train there. eff that. I left that school after a few months and realizing what a money pit it was, and entered my new school wearing zero stripes on a white belt. I may have been "better" than many of the other no stripe guys, but I still had to relearn a lot of the techniques the way they preferred to teach/execute them, and I have no regrets about leaving my two previous stripes behind.