import arcpy
import os
arcpy.env.workspace='C:/Temp/Python/zipcode_test/zipcode_test/test_fgdb.gdb'
#table = arcpy.GetParameterAsText(0)
#table = os.path.basename(table)
table = os.path.join(arcpy.env.workspace, 'zip_table')
fldList = arcpy.ListFields(table)
for fld in fldList:
if fld.name == 'ZIPCODE':
#zip_fld = fld # meaningless
zipcode = "01234"
arcpy.CalculateField_management(table, "ZIPCODE", "'%s'" % str(zipcode), "PYTHON")
works fine.Edit. Maybe I should explain. arcpy sees zipcode = "01234" as numbers. Not sure why but if you use substitution method like "'%s'" % str(zipcode) this, it uses strings.You can even shorten to:
import arcpy
import os
arcpy.env.workspace='C:/Temp/Python/zipcode_test/zipcode_test/test_fgdb.gdb'
arcpy.CalculateField_management(os.path.join(arcpy.env.workspace, 'zip_table'), "ZIPCODE", "'01234'", "PYTHON")