Well, that's a mouthful.
The problem lives in this function here... or really, more precisely it lives here. This function return signature is kind of a lie. There's nothing in the function to handle if you have 0 values for display. If you have more than 0, you get back a string. If you don't, you get back an array.
This causes a problem waaaaay down the line where $value['value'] is not an array containing strings, but rather an array containing arrays, which implode() really dislikes.
We can rectify this easily by making sure that islandora_solr_truncate_field_display() always returns a string, like it says it's supposed to.