Unless something drastic has changed in Minecraft when I wasn't looking, not all mob drops will occur if the monster is not killed by damage dealt directly by a player. This is why most drop trap designs are implemented such that they leave the fallen monsters with little enough health that a single barehanded punch will kill them and thus you also get their rare drops.
This makes your life somewhat difficult for mobs with differing amounts of health. The "rare" drops for that mob (i.e. armor parts from zombies, bows from skeletons, etc., and also blaze rods from blazes) will not spawn if the mob is killed purely via environmental damage. The player must deal the final blow to get these.
XP is also only dropped by mobs if they were killed by the player, so if you wish to farm XP you will also have to devise your contraption such that you are able to personally deliver the final blow.
If you don't care about those, then it stops mattering. You can very effectively farm bones and arrows from skeletons, for instance, with an automated drop trap or even a lava blade trap.