Part of it is that Calgary isn't a particularly exciting city if you're younger. Ignoring what man-children with anime avatars have to say, Calgary is a fine city. But guys like Tkachuk (and to a lesser extent Gaudreau) didn't have a lot going on for them as young dudes. More down-to-earth guys or people who have established families (eg, Kipper, Glencross, Iginla) tend to stick around. It's also hard to attract that talent through free agency, as 'family guys' have tended to establish themselves elsewhere.
Part of it is that the Flames are poorly run. Whether it was Sutter trading for Olli Jokinen again and again, their drafting being decidedly meh, or ownership being hardasses with money (there's some bad blood behind the scenes), it's led to a team that's been pretty mediocre for 20 years. There's been no real high points for the Flames since 03-04 and that mythical Cup run. Yeah, they've had a few good seasons, but there's been no sustained success.
Also, Flames fans are pretty wishy-washy and fairweather. I say this as someone who has lived in the city for long stretches pre-and-post 03/04. There is a dedicated core, but I'd argue it lags behind most other Canadian cities when times are tough (aside from maybe the Sens.)