My experience in this area is limited to math/engineering revolving around problems with their roots in telecommunications. Typically what happens is something like following. Engineers come up with a way of doing something better than was previously known. They present the idea at a conference (or consult mathematicians at a nearby university). The mathematicians in the audience recognize the abstract (algebraic) structure, reformulate the question, suggest possible improvements/generalizations, and start working on it. Engineers then absorb that bit of theory (or not), come up with further questions and desirable properties, and the evolutionary cycle begins.
The words "engineer" and "mathematician" were used somewhat loosely above. Their respective educations may overlap significantly, but the labels fit reasonably well.
It doesn't always go optimally. There are several niches in coding theory, where mathematicians were so enchanted by a certain problem that they continued to work on generalizing the problems and their solutions long after the engineers lost all interest (cautiously raises hand).
Perhaps Goethe put it best (given that Knuth quoted him in a similar context):
"Mathematicians are like Frenchmen: whatever you say to them they translate into their own language and forthwith it is something entirely different."