I'm not sure if this counts as a separate case per se, so here it goes:
threadOver[f_List, h_[x__]] := Inner[Construct, f, {x}, h]
As an example, evaluate threadOver[myFuncs, expr] to obtain:
y[f[u], g[v], h[w]]
A more complicated instance of my threadOver function making use of ListCorrelate could be the following:
threadOver[f_List, h_[x__]] := ListCorrelate[f, {x}, {1, -1}, 0, Construct, h] // First
Notes*:
The first version of threadOver (the one using Inner) seems to be, for the most part, contained in the example provided at the 'Applications' section for Construct at the Documentation Center
(happy new year!)
#1[#2]&you can also useConstruct(introduced in 11.3) – Gerli Dec 31 '19 at 08:50