The real problem with data.table is that it has too much magic. It's great for interactive use, but it's hard to program to.
If, for example, you want to aggregate a table using a list of supplied variable names, like if you wanted to abstract out some aggregation code, you need to descend into horrible quote/substitute/etc. hackery to make it work.