Because managing flash is hard. For this to work, the amount of exceptions in the filesystem it's self would make it unmanageable.
an example is this: a Fusion-io card up until recently used low quality flash, yet managed to get stella performance. Much higher performance than the equivalent intel ssd card (who have access to much higher quality flash) some of that is down to layout, the rest firmware.
Then you have the flash that lives on a device like your phone, however the firmware of the SoC is tweaked to run that particular flash controller.
At its heart, flash/hdd is just a key:value database (presented with 4k value size) why would we want to complicate that (sure we need to indicate to the hardware that we've deleted a page, but to be honest not much else)