>If the component is big, then you introduce more complexity[...] If a particular function doesn't fit anywhere, create a new module (or class or component)
This smells like the agile/uncle Bob "every function should be four lines" school of thought which is really bad.
Paraphrasing Ousterhout's book, it's the other way around, when components are big and contain significant implementation you're hiding information and reducing complexity, which is the purpose of good program design. When your component/object/module is just surface you've basically done no work for whoever uses your code. I see it way too often that people write components that are just thin wrappers around some library function in which case you haven't created an abstraction, you've just added a level of indirection.
If a function does not fit anywhere that's a strong indication that it shouldn't be a separate function, it's likely an implementation detail.