setContent() vs $entry->getContent()->foo
You should be using setContentFromPost() rather than setContent(), so that field types have a chance to prep the values that you are passing in.

See “What is getContent() / the ContentModel, and how do I use it to get and set custom field values?” for more info on how this stuff works.