Function with underscore overuse
Interesting question,

I am not sure there is such a thing as over-use of underscore, and what the drawback would be. I think that code looks okay from that perspective.

However, from a once over:


deserialize as a function name is unfortunate, especially since it does not deserialize JSON
profileJSON is equally unfortunate, it does not contain JSON
This seems out of order, and a roundabout way of doing things:

current.text = []
acc.push(current)
current.text.push(
  _(el).pick('version', 'text', 'language')
)


could be more like

current.text = [ _(el).pick('version', 'text', 'language') ]
acc.push(current)

You are wrapping el 3 times, wrap it once and assign it to a variable, perhaps that is what your colleague meant?
You call _(el).pick('sequence', 'textType') twice, again you should have cached this, see above
acc and el are meaningless variables and don't give me any insight as to what is inside productText