If you have a bunch of business logic currently sitting in Apex classes on the server, then you probably want to favor Visualforce. If you were to use Lightning Components you’d either have tore-implement in JavaScript or go back to the server every time the user did anything, which rather misses the point of a client side framework.If you’ve already built a number of re-usable set of Lightning Components that will satisfy many of the customer’s requirements, it makes perfect sense to build these out to satisfy the rest of them. Re-implementing in another technology rarely makes sense, the best case is that you are on another “platform” and the users don’t notice any difference, the worst case is that you break loads of stuff that nobody asked you to change. We have ways to make VF page look like LIghtning component but it will still lack the client side logic and it may hamper the performance going further with complex implementation.
On the other hand if you are good in Javascript, you can achieve anything that is there in Visualforce.