If the latter, he should get down to fundamentals without the aid of frameworks. He should have the skills to be able to take an idea, open up Notepad, and turn it into a reality. Once he's got that down, he can start worrying about frameworks to make his life easier. If you want to be a developer who builds profitable applications from scratch, you should have the skills to write your own framework, before relying on others.
Or to use your analogy, if you want to manufacture bicycles, you need to know all of the parts inside and out. You can't just take an existing bicycle, make a few tweaks, then sell it as a new product. Well, you can, but...
I think you're losing sight of what the end goal is. You aren't selling your code, you are selling the outputs of your code. If you are building applications your customers cannot even see your code. Your customers don't care if your code is hacked together inefficient crap copy and pasted from google and stack overflow or if it's the most elegantly terse algorithm ever to cross a compiler. They just don't care, they just want their air travel booked, blog posted, image tagged, or whatever; all they care about is that they accomplished what your application promised to do.
Now if your code IS your output, i.e. the linux kermel, the Node.js runtime, the Rails framework, well then you would be right but that's not the discussion we are having.
I'm not trying to split semantic hairs on what a "framework" is, but ultimately a framework is an abstraction. If the Rails framework (or .NET MVC or Django) is an abstraction that must be eschewed when getting your fundamentals down then why stop there? Do you ditch the OR/M and go back to working with array based DB result sets from an ODBC driver, and if you didn't code the ODBC driver yourself then that's another abstraction that must be recreated. This isn't mean to be a "reductio ad absurdum", I think it's they're legitimate questions if you can't make the distinction between your code being a means to an end instead of an end in itself.
EDIT: All that being said, I enjoy the shit out of learning new development methodologies, languages and frameworks and then writing great code, and that becomes it's own risk; rewrites and new frameworks or the getting the perfect DB schema make seemingly legitimate persuasive reasons for putting off accomplishing your goals. It's something I always have to keep in the back of my mind.