are you getting field value with with the leading zeros excluded, but are joining to a field with the zeros included? this is a common issue with census tract numbers, for instance.
you can use the vbscript below in arcmap or other vba data programs to generate a six character value with leading zeros, where the value is less than six characters
*remember new field MUST BE TEXT format, else will always loose leading zeros!
short_text_field: shortened field which longer field will be based on
need to change the loop condition to the longer number of characters involved (here is 6)
txtShort = CStr([short_text_field])
Do Until len(txtShort) = 6
txtShort = “0” & txtShort