Your point about thermal expansion is a good one, though there are some metal alloys with very low coefficients of thermal expansion. Don't know how expensive the cheapest of those are.
But that would still increase the size and weight of the thing. Aside from purely engineering problems, the reason I suspect they don't do something like that is because it leaves system manufacturers free to find a heat solution that fits their needs - a big block of aluminum works fine in a nice, roomy desktop, but you want something cleverer and more streamlined in a laptop, for example.
I wasn't imagining that the chip have some monstrous metal thing on top of it. Rather, my thinking was that rather than having the chip in a ceramic or epoxy carrier, it should be enclosed in a metal carrier with enough metal to ensure that the entire case would get unacceptably hot before any part of the chip was damaged by overheating, and to provide a larger area for a heat sink to bond to.
Heat dissipation is basically a function of the surface area of the object, so all a heat sink really does is increase the surface area - how it's actually configured really doesn't matter much. So maybe something thin and wide for a laptop or rackmount, versus big and blocky for a desktop. And anything you attach beforehand just increases the size and makes it less attractive to folks with space constraints.
Heat sinks can serve four purposes: (1) increase surface area, as you said, (2) provide thermal coupling between a heat source and a [more broadly defined] heat sink [e.g. a car stereo amp may have a heat sink which bolts to the frame of the car; the heat sink transfers heats from the transistors to the car's frame which can in turn dissipate a lot of heat]; (3) ensure that no part of a device gets too much hotter than any other. Some components such as BJT's can be prone to localized thermal runaway if not heat sinked, even when the total heat dissipation would otherwise be within device limits. Additionally, some devices or systems have thermal shutdown circuitry which must get hot enough to trip before any part of the system gets hot enough to be damaged; (4) increase the thermal time constant of the system, to allow a useful reaction to an overheating condition before any damage occurs [e.g. a piece of equipment might switch to an orderly-shutdown mode if the heat sink can absorb enough heat to let the orderly shutdown complete].
All of these purposes would be enhanced if chips were housed in metal-topped cases.
That being said, remember that there's really two reasons that the carriers are made of ceramics. One, because ceramics can withstand superhigh temperatures, far above what metals can do without melting. On the other hand, we're building chips, not a blast furnace, so that's not necessarily their main advantage ;)
But the second reason is that ceramics are electrical insulators - they're nonconductive. If you had chip casings and carriers made of metal, you've introduced more complexity into the design, because now you have to figure out some way of insulating the pins, traces, silicon, et cetera, from the chip casing. And this is another potential point of failure for the chip - this insulator has to withstand high temperatures without ever failing. It has to be perfectly insulated as it rolls off the assembly line, and it can never fail, or the chip is again dead, because the electrical impulses that are supposed to be traveling along the silicon and out the pins will leak into the carrier itself. And thermal expansion will again rear its ugly head - this insulator has to be such that you can squeeze it in between the silicon and the metal case surrounding it, and it has to be of a material that won't expand so much that it pops the carrier. You could leave an airspace within for it to expand somewhat, but that just increases the size of the whole package, naturally. But if that insulation ever cracks or wears down, it's game over.
It seems to me that an external system is a reasonable trade-off - put an external temperature probe on the thing, along with support circuitry, and monitor the chip for excessive heat. If the temperature exceeds some preset limit, the support system kicks in and either throttles back or shuts down the chip entirely. And that's exactly what many systems do ;)