Segwit bech32 bc1 addresses has been out for a good 2 years. Why do most exchanges still refuse to implement such a feature for its users? Exchanges create a bulk of the bitcoin transactions and also can promote the use of segwit bc1 addresses. What are some technical pitfalls to why big exchanges have not implemented this feature?
The primary reason is the lack of incentives to actually migrate their entire system. Lower transaction fees is the most direct benefit that SegWit provides. I'm not discounting the other myriad benefits that SegWit brings to the table, but for exchanges this is the most rational one. Below is a chart that shows the average transaction fees used by all the pending transactions in the mempool.
As can be seen, the transaction fees isn't that high for the exchanges to get the transactions confirmed. This is because the mempool congestion isn't high enough. Below chart shows the mempool size (aggregate size of the transactions waiting to be confirmed).
The small decrease in transaction fees that can be achieved with the help of SegWit doesn’t justify the monetary or time costs required to upgrade all wallets to the new standard. Replacing legacy addresses and migrating them to Segwit is a very cumbersome process for exchanges. For centralized exchanges, the largest cost cutting come from batching (aggregating many outputs into a single transaction) which they do when sending bitcoins from individual account's address to the centralized addresses. This underscores the exchange's decision of not moving to SegWit since the fees for getting transactions are already low. In future, if we see mempool congestion like we saw in latter half of 2017, we are most likely to see migration to native SegWit addresses.