What is the expected data type to be returned when using the prepValue() method?
Looks like the error is occurring when your field type’s getSearchKeywords() function is called. The value that’s passed into that function will have already been run through prepValue(), so at that point it looks like it will be a MyPlugin_MyModelNameModel instance (whatever the actual class name is).

If your field type doesn’t override getSearchKeywords(), the BaseFieldType version will just pass the value off to StringHelper::arrayToString(), which will do its best to convert whatever variable it was passed into a string. Something in there must be tripping it up.

Your best bet here is probably to just override getSearchKeywords() in your field type. It should be returning a space-delimited list of keywords you want to be stored for the current field value.