Préchauffer le four à 190°C (375°F) et graisser un plat à gratin de 20x28 cm ou 23x33 cm.
Couper le chou-fleur en bouquets et les placer dans une grande casserole. Ajouter suffisamment d'eau pour couvrir le chou-fleur et chauffer jusqu'à ce que l'eau commence à bouillir. Réduire le feu à moyen-doux et laisser mijoter jusqu'à ce que le chou-fleur soit tendre, mais encore ferme (environ 4-5 minutes). Égoutter, sécher délicatement et mettre de côté.
Pendant que le chou-fleur cuit, ajouter le beurre dans une grande poêle et chauffer à feu moyen. Ajouter l'oignon haché et l'ail, puis faire sauter jusqu'à ce qu'ils soient tendres et parfumés, environ 3-4 minutes.
Ajouter la farine, le sel, le poivre et la muscade. Remuer pour bien mélanger. Ajouter lentement le lait d'amande et porter le mélange à ébullition, en fouettant constamment jusqu'à ce que le mélange soit lisse et épais.
Retirer du feu et ajouter 180 g de fromage gruyère et 60 g de parmesan, en mélangeant jusqu'à ce que le fromage soit entièrement fondu et lisse.
Ajouter le chou-fleur dans le plat à gratin préparé, puis verser la sauce uniformément sur le chou-fleur.
Ajouter le fromage restant et la chapelure panko ou la farine d'amande sur le dessus.
Cuire au four pendant 25-30 minutes jusqu'à ce que le gratin soit bouillonnant et que le dessus commence à dorer. Passer sous le gril pendant 2-3 minutes pour dorer davantage le dessus.
Laisser refroidir quelques minutes, puis servir chaud, garni de persil frais.