IPython is great system for interactive programming, especially for someone who is familiar with Python and is able to find a complete distribution or able to set up all the details about their distribution (e.g. avoid problems like
https://news.ycombinator.com/item?id=6725597), or someone who requires free-as-in-speech software.
I don't use either IPython or Mathematica much, but I would understand preferring Mathematica over IPython given the choice. Aside from being younger, IPython is made of a combination of systems without a strong conceptual glue tying them together. Mathematica is made of a combination of systems too (kernel written in C, various external libraries in C, Lucene search engine, etc), but the components are tied together using what I guess is now called the Wolfram language, where everything, from computations to settings to notebooks themselves, is specified in Wolfram language expressions. If you view an IPython file in a text editor you see JSON, which is different than the language used to compute. If you open a Mathematica notebook in a text editor you see a nested set of Wolfram language expressions. Mathematica grew up around that idea.
As a further small example, compare the prompts to the two systems:
IPython
In [1]: 1+2
Out[1]: 3
vs
Mathematica
In[1]:= 1+2
Out[1]= 3
In IPython, the array brackets are just a sort of notation--the assignment isn't syntactially correct Python. But in Mathematica, you can view that prompt as assigning the value of an In list at index 1 the expression "1+2".
That sort of consistency holds through the entire system in a way that IPython can't match.