There seems to be a bit on confusion on how engine size affects fuel efficiency. A lot of people believe that smaller engines are less efficient because they are underpowered and will cause them to run outside of their efficiency zone, even when simply cruising down the highway at a steady speed. However, it's hard to find modern day vehicles with engines that are truely too small for the highway.
However, there have been people reporting worse fuel mileage in a small engine vehicle on the highway than with a bigger engine. But why? Of course the power needed to cruise along increases exponentially with speed. But generally a large vehicle shouldn't need more than 30 or 40hp, and a small car may need less than 20hp to sustain highway speeds. This is where a small engine should shine since gasoline engines are most efficient ususally around 75% load somewhere between 1,000 or 1,500RPM to 2,000RPM or 2,500RPM. And diesel engines may even have best efficiency even closer to 100% load at even lower RPM's. So how do you get an engine to run at it's most efficient RPM and load ranges? One easy way is to use a smaller engine.
So why are there reports of vehicles with smaller engines getting worse fuel economy than the ones with bigger engines? There could be a variety of reasons, but I think the main reason is most likely gearing. If the vehicle has a manual transmission, being at low RPM around 75% load on a flat road means the driver doesn't have much pedal left to accelerate without downshifting, especially when he or she hits a small incline and suddenly needs more than 100% what the engine can give at such low RPM's. In an automatic there'd be a bigger chance the transmission will have to shift back and forth between gears just cruising up a slight incline. So what car companies usually do is gear the vehicle with much lower gears. That way the engine stays at a much lower load, even if it's wound up at high RPM's, so that way you have a lot of pedal left to accelerate before needing to downshift.
The probelem is that high RPM's at low loads is bad for fuel efficiency, even with a small engine. In fact, it probably is better to have a bigger engine that runs at lower loads at low RPM's than a smaller engine wound up at high RPM's and low loads. Of course the best for fuel efficiency is to try to keep the engine close to it's most efficient RPM's and load. And in order to do that it helps to have a small engine but only if you have high enough gearing to keep the RPM's down.
Or just drive slower I guess. Of course driving slower with low gearing will also keep your load far lower than optimal for efficiency again.
There is an exception, and that applies to those who live in hilly areas or in constantly stop and go traffic. If you have to drive up steep roads or accelerate and want to do so at a decent speed and still get good fuel mileage you need a bigger engine in order to keep it closer to it's optimal range. Either that, or again, accelerate and drive slower with your smaller engine trying to keep it in it's optimal range going uphill. Or get a hybrid that the electric drive train helps the smaller engine when accelerating.