That’s exactly what struck me as odd the other day, too. The problem seems to be that Grist really doesn’t match the pasted data to existing referenceable records in any way on the backend-side of things. When you’re entering things manually, the frontend autocompletion via the dropdown menu takes care of that, but when you’re pasting - no dice.
Luckily, there’s a solution for that, at least for reference columns. Look here!
I have a solution for choice columns lying around somewhere, too. If I get some time today, I’ll make it available. Turns out I don’t have a complete solution just yet, but there’s a function to set the available/valid choices for a column. Take a look here (function ‘update_item’ - where the item in question, here, is called “choices”), and at the README for how to use this in general.