School taught you the abstract and theory of computer science and development. Working for a company takes your college level education and fills in the "real world" gaps that you don't even know are there. If you were a self-taught programmer before going to university, a good CS program will fill in the holes in your educations (typically data structures, algorithms, dynamic programming, etc).
In the same vein, a real world programming job rounds you out and makes you a stronger developer. You might understand things like program/object/interface/API design, Code reuse, documentation, etc in an abstract sense, or even some practical knowledge from working on small team projects in school. Finding a good team to work with in professional setting will help you mature.
This is why company size doesn't completely matter here so much as composition of the team. You need diversity. You want a team with 5-6. This will have a mix of junior and senior folks. It just large enough that having effective communication and planning becomes important.
If
A company, where software is the product (ie you get paid based on customers wanting software that your company writes) and there is a good mix of experienced vs junior developers.
There are lessons you can only learn at a software company and the sooner you learn them the better. Further, learning from experienced developers will jump start your own experience in ways nothing else can.
If I had one major knock on the advice to join a startup right out of school, it's that so many of them are lacking in experienced software professionals. Full disclosure though, I joined a software startup right out of school (during the first dotcom boom).
This advice is largely based on the assumption that you want to have a long term career writing software for a living. If that isn't the case the variables change dramatically.