Position a rack in the center of the oven; preheat the broiler.
Peel the skin off two sides of the eggplant and trim off the top. Slice lengthwise into long, thin planks about 1/4 to 1/2 inch thick, then dice into small pieces. Arrange in a single layer on a kitchen towel; sprinkle with salt.
Place the cubed potatoes in a medium pot and add enough cold water to cover by 1 inch. Bring to a boil, salt the water and cook until tender, 10 to 12 minutes.
Meanwhile, in a large, deep skillet, heat the olive oil, two turns of the pan, over medium-high to high. Add the meat and cook until browned, breaking it up with a spoon, 5 to 6 minutes. Add the oregano, crushed red pepper, bay leaf, allspice and cinnamon; season with salt and pepper. Pat the eggplant dry and add to the skillet along with the onion and garlic. Cook, stirring occasionally, until the vegetables soften, 7 to 8 minutes. Add the tomato paste; stir 1 minute. Add the wine; stir until evaporated, about 1 minute. Add the stock; reduce the heat to low. Simmer until the meat mixture thickens, about 3 minutes.
Drain the potatoes and return to the hot pot. Add the creme fraiche and milk; mash until smooth. Add the nutmeg and season. Stir in the egg yolk.
Discard the bay leaf from the meat mixture; transfer to a medium casserole dish. Top with the mashed potatoes and smooth the top with a spatula. Sprinkle with the cheeses; broil until browned and bubbling, 3 to 4 minutes. Serve from the dish into shallow bowls.