transferFrom, approve, safeTransferFrom function are payable function in the ERC721 Standard,but openzeppelin inplements those function are public

Can you explain to me the reasoning behind implementing it in this particular way?

ref: https://eips.ethereum.org/EIPS/eip-721

For anyone curious, pointers to the relevant discussions can be found here https://github.com/OpenZeppelin/openzeppelin-contracts/issues/4950