It looks pretty intuitive to me if the participle of avoir is avant, but it's actually ayant. What is the story behind this V vs Y difference?
I think ayant was built on the subjunctive stem (found in ayons, ayez). The present participle of the Latin verb habeo had the stem habent-, which wouldn't be expected to develop to French ayant. (However, see Eleshar's answer for information on an alternative form of the present participle that apparently existed in later Latin.)
How the subjunctive stem evolved from Latin forms with -be-
The present subjunctive forms of habeo in Latin have a -bea- sequence where the e would have evolved into a semivowel [j].
According to a book I found, Romance Languages: A Historical Introduction (by Ti Alkire and Carol Rosen, 2010), in “Popular Latin” -b- had already been lost entirely before [j] in forms of habeo. For example, Alkire and Rosen give *[ajatis] as the “Popular Latin” ancestor of Modern French ayez. The complete loss of -b- in this context does not seem to have been a regular sound change, but rather an irregular reduction that occurred because habeo was a frequent verb that was often used as an auxiliary (p. 140).
I’m not sure whether this reduction was complete before the split of the Romance languages, since Italian has -bbi- in the present subjunctive. But Spanish seems to agree with French in this: it has the present subjunctive stem hay-.
If habeo had developed regularly, I think the intervocalic -be- would have evolved to [βj] > [dʒ] > [ʒ] instead (see TKR's answer to the Linguistics SE question How did French lose the Latin -v-?). So the [β]/[v] would still have been lost, just later on.
Why the subjunctive stem?
I don't know why the present participle of avoir would have been built on the subjunctive stem; maybe dimitris's suggestion about avoiding homophony is correct. Sachant, one of the two other French present participles that currently has an irregular form, also shares its stem with the present subjunctive (but in the case of sachant, the form looks like it might be traced back etymologically to the Latin present-participle form sapient-).
Ewert (1960) says
- The close connection of the present participle-gerund with the pres. ind. and subjv. results in its being frequently re-modelled on these tenses, with or without the added support of the infinitive: ayant for avant (habentem), pleuvant for plouvant, voyant for veant, croyant for creant (which survives in archaic mécréant); O.F. vueillant (beside voulant < volentem) survives in bienveillant, malveillant; (as)seyant and (as)soyant crowded out (as)seant (< sedentem) which survives as a substantive and in bienséant, malséant. Other verbs in which both forms survive (one as the pres. part.-gerund, the other in a specialized use which has isolated it from the rest of the verb) are: pouvant—puissant ([by analogy with] puis, puisse); sachant ([by analogy with] sache) (twelfth-century)—savant being used only as an adj. or substantive since the sixteenth century; valant—vaillant ([by analogy with] vail, vaille) now a pure adj. except in n'avoir pas un sou vaillant; en son vivant, sur son séant are survivals of the O.F. substantival use of the gerund.
For habere, there is attested active participle form habeant-, probably from late Latin that evolved to the French dialect of proto-romance. From there, it would be the same evolution as the subjunctive itself.
The forms based on habeant- are easy to find just by googling, but if you need some better source, e.g. Foley,J: Theoretical Morphology of the French Verb indicates there seem to be quite a few other verbs where the late Latin seems to have used the subjunctive stem as a source for the active participle. My guess would be this was an analogy with the prevalent a-form verbs of the first conjugation, ending with -ant- along with the pressure to maintain the stem vowel -e-.
Just a guess (and not quite obvious as I thought initially). In this way the confusion with the fundamental word avant was avoided.