(Advantages are given with "+" and disadvantages are given with "-")
3DSX:
+Easier to adapt to exploits since installing homebrew CIAs requires CFW
+Somewhat easier to "install" since you just toss them in a folder on the SD card, while a CIA has to be installed with a CIA manager
+From the programming side of things, it offers a quicker way of testing via netloading, but there's a rough CIA version of it (however, it's not quite as easy to use)
-Runs in the arguably less stable *hax environment
-Limited permissions in terms of what system services you can run; specific requirements require piggybacking onto system apps or games
-Limited size for code, ~2MB max without piggybacking onto a large game like Smash or MH4U
-No dynarec/dynamic code generation without an ARM11 kernel exploit
CIA:
+No realistic code size limit (much, much larger than 3DSX allows for generally)
+Runs in a more stable environment (CIA is a native format to the 3DS, and CFWs generally only patch signatures and few other things, so the OS is typically much more stable than when *hax is running)
+Dynarec/kernel access via svcBackdoor with no extra effort needed
+Can ask for any services as long as the RSF used to make the CIA requests them
-Somewhat more difficult to install due to needing a CIA manager
-Somewhat slower to test without using a special lib by cpasjuste
Basically, CIAs offer stability and access to everything, while 3DSX works without CFW and is more adaptable to non-CFW environments, at the cost of limited code size and some stability.