Lets say you create a RTCPeerConnection. Create an offer and call setLocalDescription. Send it to your peer. You get an answer from the peer and feed it into setRemoteDescription.
You might wonder why it does not result in a connection.
Next, you create a datachannel. Your datachannel never opens because after adding the datachannel (only the first!) you need to call createOffer/setLocalDescription and call setRemoteDescription with the answer.
"web developers" are notably confused:
Now your connection gets established. If you add another data channel you do *not* need to do this negotiation again (thankfully; adding audio or video tracks requires negotiation).
In this case using the boolean flag is saving you one round of negotiation.
In many applications you do not know if you want to use a datachannel but since you might, you preemptively create one and throw it away. You can see that e.g. in Google Meet which calls
pc.createDataChannel("ignored", {reliable: true})
It never uses that channel but it shows up in the getStats API every time.