Exchanges charge withdrawal fees as a means to make money, and to offset the actual amount of expenses they incur in processing a withdrawal. Exchanges charge a fixed fee to process withdrawals because they have dominant pricing power.
It could also be because said exchanges haven't designed an internal mechanism to adjust the fee of a user's transaction in the first place and just assigned a static constant for everybody regardless of network conditions.