I was wondering the same thing. As I understand it, the main difference is that with Flashcache you tell it, "here, you're in front of this device". And then you mount the flashcache device.
bcache uses a kernel feature that lets it hook in 'from the side'. So, you still mount the regular device. In theory you can insert/pull/insert bcache as much as you want and your apps would be fine to keep on running. I think that makes it ultimately more powerful.
You could even imagine a workload where you have a bazillion disks that receive sporadic heavy access (maybe remote disks where old data isn't useful), and you could have some sort of monitor that would keep a few SSD's busy by inserting them as bcaches on-demand.