I have been asked this question a few times, so I thought I would post on the topic. This is obviously relevant to my preferences and YMMV.
My background is primarily server side software development. I really enjoyed (still do) building large scale, robust, etc, etc systems. The fun part was being able to relate to the product offering at the domain level, coding that up into a service. At the same time, server side requirements meant paying careful attention to systems level issues like operating system, hardware resources and techniques like caching, failover, etc. While that’s a lot of fun, it usually lacks how an end user interacts with the product. When I say end user interaction, I really mean product presentation to a paying customer – UI style, workflow, animations, sounds – how the product really feels when it is used for its primary purpose.
With mobile you get best of both the worlds – you get to write fat clients (app) that are rich in user interaction and you have to worry about network as well as be a good (software) citizen (don’t hog down the system resources – memory, network, battery and so on) on the device. Also, a lot of business logic gets morphed to maintain the instant perception for the user. So you get to write a bunch of additional local business logic in the app or at the very least you will influence the API design decisions made on the server side.
It’s a fun and powerful combination of product, software and UX development in a small package.