The reason it is optional is that in 802.11 RTS and CTS are management frames. Management frames are sent at the lowest base/basic/required data rate supported by all clients associated to the ESS, which is typically much lower than the data rates used for normal unicast traffic.
The reason for this is that only the data rates that are configured as base/basic/required for the ESS must be supported by all clients connecting to the BSS (this means that if you want to support older clients the required data rates cannot include data rates from newer standards). Therefore those are the only data rates that can be used that are guaranteed to be able to understood by all clients.
This means that RTS and CTS frames will then use a disproportionate amount of "airtime" and make use of the spectrum much less efficient. As an example (very basic/rough), consider that you have a small data frame to transmit at 600 Mbps. However, the base data rate for the ESS is 12 Mbps (a moderately decent signal for 802.11a/g clients which most networks still support). The RTS and CTS frames may each take as much as 50 times the airtime of the data frame. This takes the total transmit time from one "time slot" to 101 "time slots." Much less efficient.
An alternative solution that has some of the benefits of RTS/CTS but is more efficient is the CTS-to-Self mechanism. This allows a wireless station to send itself a CTS frame, clearing the air for it's transmission. This doesn't alleviate issues such as the hidden node problem, but does decrease the impact on the efficiency.
Most networks do not utilize either RTS/CTS or CTS-to-Self as they can have more of a negative impact on performance than the problems they are trying to alleviate.