N8128, Thank you so much for a more thorough explanation on the issue! This will help greatly and hopefully anyone else that comes after us to save them a load of time tracking down this issue. We where suspecting it had something to do with that new ::NeedsLoadForClient() function but where dumb founded as to why it was happening and its nice to get an explanation on why the cooker is stripping out the assets. It all makes more sense now why it had been happening in the 4.12.5 build and not in the 4.9.2 builds.
So I'm starting to assume that the ::NeedsLoadForClient() function can't be overwritten just for the MaterialExpressionWaveworks.h because all the other expressions run the same check and fail and strip out on cook as well? So now I also see and understand why you are saying we have to change it on a global scale at the root level for UMaterialExpression.
bool UMaterialExpressionWaveWorks::NeedsLoadForClient() const
// We need the asset cooked