Why are id and id_string different?

Why are id and id_string different?

In the ZoHo Projects API, the returns often contain two fields, id and id_string
Often they are the same, but on some records they are different, and experience has taught us that the id_string value is the one that will work in further API calls.
I'd like to know what is the difference between the two fields, and what are their intended uses?

This can be quite annoying -- for example, calling /portal/[PORTALID]/mytasks/ will return a list of tasks, including the task's project id. Unfortunately, it is the id field, not the id_string field, meaning that it is of limited use when making API calls to the Project (it may match the id_string value, it may not)