If you want to take a credit card, you need to open a bank account, sign up with a payment processor and integrate with them (stripe makes this easy, what if you can’t or don’t want to use stripe?), handle chargebacks, etc.
If you want to accept bitcoin, you run a piece of software and write a few lines of code.
Yes, and for these extra steps the money I earn is realistically not in danger of losing 20% of value overnight, can't be lost because the harddrive that held my password-safe got corrupted, the transactions are done instantaneously instead of whenever some miner feels like including them in his block, and the amount of energy required to process the payment, is probably not much more than I currently use to write and send this post.
The webshop exposes some way of receiving value tokens, be that USD, EUR or BTC, and has some way to tell which user transferred how many tokens.
So technically there is no difference.
The difference is, I can be pretty sure that EUR won't lose 20% of their value overnight.