Ok, first post in many years, and I managed to finally find the answer minutes after asking the question (I've been trying to find it for 1 whole day before that) and it's so simple I'm a bit ashamed ^^'

Anyway, if anyone stumble onto this post with the same question, here is a quick explanation.

^ | 1-u |------/ | / | / | / H |o / | / |/___________>

Forgive my poor ascii art, but it's easier to understand this way ^^'

Here, o is the theta angle. Since we're sampling on a unit sphere, H is always of length 1. This leads to cos(o) = 1-u for the uniform mapping, all good.

Now for the cosine weighted one, H is no longer of length 1 (that's what I had wrong) : its length is what's weighted by the cosine ! So in fact : |H| = cos(o)

And now, we have the following : cos(o) = (1-u) / |H| = (1-u) / cos(o)

And this leads to cos(o) = sqrt(1-u)

One day to come up with that ... I feel a bit dumb, but still glad to finally understand this completely ^^'