I am aware that this might be a question with only subjective responses, but i keep coming back to this thought.  

When you are designing a software's architecture, do you group components by their kind of task or their "theme"? 

For the lack of a better example, if you have a lot file exports to do in your application where one is part of dealing with "billing" but you also have many other components who deal with this theme. Do you group them by the kind of work (which would be exporting here) or by their "theme" (which would be billing)?

Is there any objective way to determine when the one makes more sense than the other in certain scenarios? Not based on taste.