Chris Johnson posted a great article on the options for conducting UI application development in MOSS 2007. Many of us conducting MOSS development have been through this exercise in deciding about how to conduct development. See his article here:
Here is his decision matrix for my own selfish ease of use.
Per site functionality
Smart Part or Web Part
Single instance application
Site extension functionality
Thanks Chris for putting it into words for us.