Иногда достаточно CSS (и это замечательно), иногда CSS пасует перед JS даже в тех случаях, когда, казалось бы, не должен (
тут, например, чтобы добиться адекватной работы в старых браузерах, пришлось переписать все на JavaScript).
К тому же есть множество всяческих нюансов (анимировать движение лучше через translate, нежели top и left, et cetera), которые нужно учитывать вне зависимости от выбранного инструмента.
Наверное, не очень разумно пилить ВСЕ анимации на чём-то одном, стоит выбирать исходя из пожеланий к результату и временных ограничений.