I would need more information, but for an initial quick reply on my assumptions, my instinct is that for importing and synching (as in not re-importing data but rather updating) the indispensable DataGrab might suit the bill. It allows you to import multiple formats, from RSS to XML and JSON, etc., and specify a key (think database index/key) so that duplicate keys won't be re-introduced to your database.
In your case you would be able to key the external unique identifier to your internal (EE) unique identifier, and thus not only import your records, but also update them if they change on the other side. Sweet.
As for the programmatic part: set a cron job to poll ExpressionEngine's native
?ACT=XX&id=XX urls and the system will update whenever you wish. ;-) If you're stuck with only having image URLs to work with but you wish to actually bring in the images, I believe that Causing Effect's CE Image will work with an external URL (fist time the page loads) and thereafter use the local file. So as long as you can get the image's URL into EE, you can have the system (via CE Image) pull it in for you. I don't know how I would integrate this with Assets, but I haven't actually thought that part through. I'm sure you'll be able to come up with something. :-)
I'm using DataGrab extensively on a client site to bring in RSS feeds of medical articles. I'm able to filter the incoming feeds to only import articles that contain certain words (since I don't want non-relevant articles) and it's superb, a deceptively simple-looking Swiss Army Knife of data import, and one I recommend highly.
Check it out!