As someone who had an undergravel filter in a large tank (a 90g), and then changed over to a casnister, I would recommend the canister. I also had UG filters on several smaller tanks years ago; I now have only sponge filters on tanks under 70 gallons.
Undergravel filters are certainly efficient and effective. When I started in this hobby, these were about all there was, except for the boxy corner filter that took up space. But there are consequences with UG filters. For one thing, all the crud is permanently in the gravel and under the plate. I used to use a suction to pull out what I could from under the plate (up the air lift tubes) but it didn't get all of it, and it was tedious. Most of us have more fish in a given tank than an UG filter can effectively handle without some method of removing the crud.
Plants generally don't mind UG filters, though you will find many plant sources disagreeing.
Another thing is the substrate material. Sand is the best aquarium substrate in the majority of cases (the exception being tanks of fish better suited to gravel). Some substrate fish such as cories and many of the loaches should only have sand. So you have limitations with an UG filter because you cannot use sand due to it clogging the plate.
The API XP3 canister is fine for your 120g tank with plants. I had one of these exact same filters on my 5-foot 115g planted tank for six years. My only criticism of this filter is the enormous work it took to rinse the four pads clean. Clearly the filter was doing a tremendous job, else thee pads would not have been so dirty, but it was a
lot of rinsing.
But a good filter, on the whole.