The Flames had Neal playing in their bottom-six, a role he was terribly suited for. He definitely didn't want to be playing there, either.
The Oilers were trying to play Lucic with McDavid and it was a horrible fit.
The Flames traded for Lucic and put him with a small defensive centre in Ryan and a small, fast winger in Dube. His role on that line is to clear space, win board battles, and make good passes when he gets the puck. He's performing very well in that role and is on pace to easily surpass his production (and Neal's production) from last season. It's a better fit.
The Oilers traded for Neal and put him in a prime scoring opportunity next to McDavid and on the top powerplay unit. They've treated him like a first-liner and given him one job: to put the puck in the net when it gets on his stick. He's done that job pretty well -- certainly with more success than Lucic did the last couple years. He has represented a sizable upgrade in that department.
Neither guy is paid a fair salary for what they provide. On the open market, they both probably get around $2 million and a one-year term. But for what they are, and for what they're paid, both teams now have the right player. They both had the wrong player before. But with Lucic, the Flames get a guy who can clear space for their smaller, speed/skill forwards, while with Neal, the Oilers add a guy with good finishing ability who can help McDavid in the offensive zone. McDavid doesn't need a guy to clear space for him along the boards -- he's too fast for that to even be an issue, really. He just needs a guy who can get the puck on net effectively.
Win-win.