There is actually a difference between them.
小年 (shounen) is proper and more formal than 男の子 (otokonoko). 小年 (shounen) is used in legal documents, official writing, literature, etc. It covers boys from ages ~6 to ~18.
男の子 (otokonoko) is more common in daily speech, and it can be used for a very wide range of boys, including those under 6 years old. On the other hand, the formal 小年 (shounen) covers adolescents more strictly.
The same logic follows in distinguishing 女の子 (onnanoko) and 少女 (shoujo).
To make a small correction, it's 少年 and not 小年. I believe that's what NessyNoinex wanted to ask; there's no problem in translating "boy" into 少年.
"少" means few/little while "小" means small in general. Thus "少年" means "of little age". Let me also add that 少年 also means juveniles in general, regardless of their gender.
"少" can also mean "young", thus "少女". I don't know the reason why we don't have the word "少男".