Phil, I can reproduce the discrepancy. Calling the `modified` property of the `Item` object should get you the latest as shown below:
In [7]: datetime.fromtimestamp(my_item.modified/1000)
Out[7]: datetime.datetime(2017, 9, 19, 7, 0, 36)
In [8]: datetime.fromtimestamp(my_item.created/1000)
Out[8]: datetime.datetime(2017, 8, 31, 11, 38, 6)
Where as the date you get from XML calling the `metadata` on the Item object returns a different date.
One reason could be this. Behind the scenes, ArcGIS tries to sync the metadata fields (what you see on the item page which is same as what you get as properties on the Item object) with that of the metadata xml file. This sync could fail in cases where you have non-standard metadata fields defined in the XML, fields that ArcGIS is unaware of. We need to know how those were created to understand this better. I'd recommend you log a support ticket and explain your workflow.
On the other hand, if you only wanted to know the up to date modified date, you can use the code shown above.