You have the right idea; you're just making it more complicated than it needs to be. Try:arcpy.CalculateField_management(test_poly, "X_COORD", "!Shape!.centroid.x", "PYTHON", "")
I have attached a screenshot below.
Well that's interesting. You do have a shape field called Shape, I assume? Maybe you can attach a one-record copy of this table so we can reproduce the error.
The * is okay, that just means the field is binary, which is a good thing. The csv export you posted doesn't have a shape field, and doesn't contain the original field formats, so it doesn't help much with determining the problem. Please see the attached screenshots for proper export technique.