It's probably best to give a concrete example of this phenomenon.
Say we want to think about the function $f : \{ 1,2 \} \to \{a,b\}$ which sends $f(1) = a$ and $f(2) = b$.
In ZFC everything is a set. In particular we need to choose a way of encoding $f$ as a set so that we can talk about it1. The widely accepted approach is to encode $f$ by its graph: $f = \{ (1,a), (2,b) \}$. Now, a far as ZFC is concerned, this set is the function $f$.
But let's talk about a new function $g : \{1,2\} \to \{a,b,c\}$ which sends $f(1) = a$ and $f(2) = b$. Well, again, in ZFC we identify $g$ with is its encoding: $g = \{(1,a), (2,b)\}$.
So then $f = g$! They're literally the same set, and so we cannot distinguish them in ZFC. This is fine for the purposes of set theory (and even for our day to day lives), but it explains the friction between the category-theoretic "codomain" and the set-theoretic encoding of functions. From only the encoding of $f$, we can't actually recover the codomain!
How big of a deal this is depends on who you ask. I don't immediately see a reason why we couldn't solve this "problem" by keeping track of $A$ and $B$ explicitly and defining $f : A \to B$ to be the tuple $(A, \{ (a, f(a)) \mid a \in A \}, B)$. It's possible that we would need to redo some small parts of early set theory (for instance, this might change the rank of $f$, which might matter in particularly weak settings). More importantly, a lot of set theorists will build functions by taking unions of partial functions, and this modified encoding is slightly less amenable to that technique.
I suspect this is all superficial, and the new encoding wouldn't matter that much in the working life of set theorists, but I can't say for sure. Hopefully someone with more experience in set theory can say some words about this.
1. As an aside, this is one of the common arguments that people make in favor of type theory. We don't need to make any encoding choices, since we allow more complicated "primitive" things than just sets.
I hope this helps ^_^