I personally prefer option1, because sometime, the code may not have a clear boundary of which group it falls into, so I can put them in parent location or create another general directory. For option2, one of reason I don't prefere is because for developer, when he try to find a code and if the group is not very clear, then once again, it will be hard to locate.

Thanks for the comments. I think my choice of using user and admin wasn't really good example. I agree with you all, using option 2 when there are clear distinction like front-end (user) vs back-end (admin). However, I want to further distinguish features in different group under the front-end. Here's example. (I kept multi module setting as everyone suggested for large grouping).

Sample Option1
(Separate MVC for multi modules + Sub-features are grouped further within each MVC in each module)