To be honest, I'm not entirely sure. I'm no professional. I grew up speaking Vietnamese but I don't consider myself a native speaker. My family and I typically omit the "có" anyway.
My guess is because some languages use "to have" rather than "to be" for certain adjectives. In English, we say "I am hungry". In French, we say "j'ai faim", which is literally "I have hunger". It just makes sense in French, and even in Spanish. So it's possible that "to have a colour" simply makes sense in Vietnamese.
Just a hunch =\
You can play around with their meanings and assume that "có" is equivalent to "am/is/are". It's a matter of perspective after all.
As I mentioned in tips & note, you use "có" in some cases: involve color (like in this sentence, it literally means "post office has the color yellow") and interrogation form (có + verb + không to form question).
It's just the way the language is. You may think "có" functions as "is" before adjective if it makes you remember Vietnamese grammar better.
Is this sentence odd to other people (or any other sentence involving colours)? The Vietnamese I have spoken in the past uses "là" instead of "có" since it would be more similar to saying "the post office is yellow" rather than "the post office has yellow" which this sentence is more akin to. Or my way of speaking Southern/Old Southern which is possibly the case.
I wouldn't use either có or là. with có I would understand that the post office has parts of it in yellow colour not necessarily the whole building is. as for là I would understand that all post offices are yellow, as their logo for instance. on the other hand, I would instead just say "bưu điện màu vàng", or "bưu điện nó màu vàng" (as for the post office it is yellow), or precise it as "bưu điện này màu vàng", "bưu điện đó màu vàng", "bưu điện ở trung tâm SG màu vàng".