The federal government does not have the power to explicitly order states to have a given minimum age for drinking or smoking. This is part of our federal system. The Constitution says nothing about smoking or drinking ages. When the right to make a given sort of law is not explicitly granted to the federal government or explicitly denied to the states, the states have the right to make laws of that sort. Therefore, the states have the right to set their own ages for these activities.
However, the federal government has, in effect, set a national drinking age of 21. It has done this in a roundabout way. It has said that states that have any other minimum drinking age would have their federal highway aid cut. By doing this, the federal government was not technically telling the states they had to change their drinking age. Instead, it was leaving the choice up to them, but setting consequences for making the “wrong” choice. The situation is similar with smoking. The minimum age for buying tobacco is 18 and states that set a lower limit would lose some federal funding.
Thus, the federal government does not technically mandate minimum ages for either drinking or smoking. States have the right to set their own ages, though they face financial penalties if they allow underage people to drink or to buy tobacco.