Well MPPT would give maximum power to the batteries as that is what it stands for: Maximum power point tracking. But MPPT requires intelligence, intelligence requires power. Depending on the efficiency of your design (processor and software in processor, or the power use of the hardware, if you're planning on attempting that route). This may then reduce the power to the batteries by enough that you would be better using one of the other options. Also, MPPT means that there is no control of the power flow into the cells. Not controlling input into a battery is a bad idea. Do not do that. If you are using batteries in anything in life, make sure you know they are being charged and discharged in a safe manner.
A DCDC to take the power down to around 4.5V sounds simple, but you've got to work out how to convince the DCDC to keep outputting power power to the cells to charge them up when they're 3V or less. So then you end up making a constant current charger. This is a type of DCDC, but it's a CURRENT rather than VOLTAGE controlled. Until the voltage reaches a certain level, and then you'll need a constant voltage to avoid damaging the cells. This would be the best way to charge the batteries if you had a nice steady source of power. But you solar panels are not going to give lots of current at and ideal voltage.
What you could do (and what I would want to do) in an ideal world is: use a MPPT to get power from the solar panel and store the power in a capacitor bank in the useful voltage range. Capacitors are a lot more resilient in charge currents and voltages, and so can handle the inconsistent nature of energy flows from the MPPT. Then us a constant current, constant voltage charger for the batteries. This will then get you the most out of the solar cell, and charge the 18650s as well as possible. This method is the most expensive and most complicated.