Josh, source engine bakes directional lightmaps which stores light direction into a RGB channel, this is useful to fake dynamic lighting on static meshes (as CSG brushes) and even compute lighting dynamic on moving entities veary cheaply as the light direction is already computed. The only downside is that light sources must remain static (never moves). Directional lightmaps doesn't need to be as big as lightmaps. You can have as many detailed lightmaps in a big scene and few or even only one directional lightmap per level.
And i agree with the Source approach, if you can mimic the source engine, you will have a very good renderer that runs everywhere.
A defferred renderer won't run on current mobile devices it is too bandwith hungry. Maybe in a two years when the iPad4 will be the lowest thing you can get on a tablet then maybe you'll have good chances to write a defferred rendering for it. Otherwise, stick with the Source way.
Even in a forward renderer you can compute multiple lights in the same pass and you automatically switch their positions in the shader (for each dynamic object affected by lights). For example you let the user chose how many dynamic lights should any entity be affect by (to a maximum of 4) and switch lights position in the object shader. If i remember well, source engine does exactly this with dynamic entities. Unless you really want to see tons of lights moving in a game (hich is really rare), i don't see any urgent need for a defferred renderer.