The best way to attach a heatsink to a SMD component?
I don't know about maximum efficiency but there are little stick-on heatsinks that can reduce the junction temperature of BGA and LQFP packages. 

I got like 90 of them (2 sizes) from Aliexpress for about $7 US shipped, but you can also find them at distributors. Chances are good the adhesive might be better in terms of longevity and thermal conductivity from the disties, but $$. 

There are other options such as using a high tech thermal pad between the chip and a finned case, but there isn't so much advantage in that for the relatively low power levels and home/office environment. Chances are your SoC will be obsolete before it fails if you keep the junction temperature reasonable. 

As others have said, most of the heat is typically conducted out through a thermal pad (with copious thermal vias on your board) to planes on the board. Keeping the board cool can be done with a fan, or perhaps something attached to the opposite side of the board (insulation is really important or something could be damaged).