My view...
Perfectly legal in terms of Labour Law. The BCEA governs the 15 day minimum it refers to with specific guidelines. Anything above this is at the will of the company. In other words, they aren't breaking any laws by not giving it to you and no law governs it so they can make up their own rules relating to the days above 15.
There is an element of contract negotiation that may be influenced by this. So it should be specified how leave is accrued and paid out in the contract. They still wouldn't be breaking any Labour Laws by not paying you out for accrual on anything more than 15 days per year even if it was specified. It does however become a civil matter and you can take legal action for breach of contract if this is the scenario.
It may also be an aggrivating factor in unrelated CCMA cases such as constructive dismisal, but I can't see that the CCMA has jurisdiction over that as a standalone case.