Most of the fee is directly for miner or you may called as transaction fee and it considerably cheap, and yes some exchange charge different fee because fee itself is fluctuative, sometimes is high sometimes is dirt cheap it all depends on how many people do the transaction. Because of that exchange charge usually above the current market a little bit. So when spike they didnt loss a lot
The extra charges are on exchanges are mostly not included because of a price hike but rather because exchanges themselves have an extra fee they charge for withdraw and it is this fee that they had to the transaction fee just enough to actually get a transaction fee confirmed. In my opinion exchanges even gain more through this withdrawal fees than anything because some exchanges charges are even way above the transaction fee leaving a chunk for charges and yet again they are actually batching up transactions and not actually sending them one by one which is less costly than sending each transaction one by one and their charges is based on by one transaction not batching