In short, CiviCRM-Contribution pages work well if you can stick to the default workflow and functions and if your requirements regarding layout and functionality are not too fancy. Examples:
- You can decide which information to ask from donors for each donation page but you for example not easily create a activity at the time the form is sent
- You cannot change layout and style of the form easily and there is usually a three-step form (data entry page - confirmation page, thank you page)
- Conditional forms are not easy to implement with CiviCRM contribution pages
- Changing content and layout of the automated confirmation mail can be a pain
On the plus side, those forms are really easy to set up and most CiviCRM payment processors should work out of the box.
With Drupal webform integration you can do all kind of fancy stuff with your forms, including adding other pages, conditional fields, massively changing the layout, decide on the url you want to use, record other data whne the form is filled out etc.
The downside is that you will need more ressoruces and technical expertise to set up, and you have to test your custom forms properly. Creating the forms and integrating them with the website can be a bit more complex for inexperienced users too. Finally, there range of available payment processors is more limited.
So it really depends on the project planned. There is also the option to build a completely separate form and connect it to CiviCRM via the API which gives you utmost flexibility but is even more complex to set up than a webform.