When a disassembler starts disassemble a program, it has to determine which one is data and which one is code. It's not perfect science.
W32Dasm and IDA may just use different algorithms in making the decision.
IDA may start from program entry point and exported functions to find all executable code. Everything else will be data. But things like virtual fuction implenmentation code is hard to tell automatically.
So good thing about IDA is that you can change DATA to code yourself, because it's interative.
Another difference is that IDA may not be designed for modern compiler which normally generate code and data in seperate sections.