It all depends on how you plan to use SharePoint. Both SharePoint Designer and Visual Studio are tools. They have some overlap, but you will want to use the right tool for the right purpose.
Visual Studio is for creating applications. If you intend to use SharePoint as a platform for custom web applications, then you should be using Visual Studio. SharePoint Solution Packages developed in Visual Studio are reusable across sites, site collections, web applications, environments, and even organizations. For applications, SharePoint Designer can be used as a prototyping tool within the development environment, but it should not be used within the production environment.
Visual Studio gives you the most flexibility and options available. Note that this can be good and bad. The SharePoint object model will give you enough rope to hang yourself. If you are not careful, your code can perform poorly and consume memory.
Like any other web application, developing applications for SharePoint in Visual Studio allows you to maintain your code in the source control repository of your choosing.
However, developing custom web applications is far from the only use for SharePoint. Many SharePoint farms contain regular, out of the box team sites, meeting work spaces, or publishing sites used for collaboration and content management. These sites do not need to be portable or reusable. There is no development or staging environment - there is only production. And in some cases, site customization and even site creation is done by end users, rather than by developers. For these sites, SharePoint Designer is a better tool than Visual Studio, except for the cases where the desired functionality cannot be achieved using SharePoint Designer.