This distinction only exists for the internal processes of your wallet, and to provide a better UX to the user.
Consider for example when you request a payment. You generate a receive address, the sender creates a transaction to pay you. The transaction creates a recipient output that assigns the payment to your receive address. Your wallet will now show this payment in your “Receive” tab.
On the other hand, when you make a payment, your transaction might have two outputs. One recipient output to make the payment, and a change output to return the remainder of the funds from the inputs to your own wallet. The change address to receive the change output was created on the fly by your wallet when it created the payment transaction. The change address and change output will not show up in your “Receive” tab, because you transferred funds from your left pocket to your right pocket. Rather the transaction will show up in your “Send” tab.
Your wallet might also use a different approach when scanning receive and change addresses. While you might give out a receive address, but never receive a payment to it, almost every change address on the subchain will be used, since they are only generated on the fly when you are already making a payment.
So, while they work exactly the same under the hood and there is no mechanical issue using one or the other for the opposite purpose, in regard to actually receiving the funds, your wallet software may operate under some assumptions regarding the purpose of the addresses that could impact your UX. I would recommend using the addresses per the purpose that they are meant to have.