Are you saying that you believe that there is no way for you to manually set your fee when you send bitcoin? Would you like to wager on this?
It is of course possible to create a transaction with any amount of fee that you want it to have. The raw transaction RPC interface of Bitcoin Core will let you do it, for example.
The point that you are missing is that you (the person requesting a withdrawal) don't know how big (in bytes) the transaction is going to be, since you don't know what UTXOs are in the sending wallet or how the coin selection is done. So you don't know what an appropriate fee would be.
All you know is how urgently you want the withdrawal to confirm.
So you specify the urgency, and the site sets the fee accordingly, based on how congested the blockchain currently is, based on the size of the transaction, based on the size of the mempool, and so on. Sometimes the fee included will be more than you pay and sometimes is will be less. On average it should balance out. The experience for the user is better that way - he pays 300 bits and gets a quick confirmation whether the blockchain is busy or not, and whether the site's wallet is mostly composed of dust outputs or not.