Believe it or not, this is a complicated question.
Probably, the biggest advantage to using a smaller data type is to 'put' more data in a page. You see, SQL Server stores data in your table on a disk. It does this in 8K chunks (page). Now, depending on your table, you may get 1 row in an 8K page, or you could get 100's (or even thousands) or rows in a page. Now, think about what happens when you write a query. Assuming there is a where clause on the query, SQL Server must search through the tables to get the rows (from the table) to return. It loads an entire page at a time. If there is 1 row in the table per page, it will have more pages to load than if there are 100's of rows per page. File I/O is extremely slow compared to memory, so reducing the amount of file I/O is always a good thing.
Now, don't misunderstand me. It's not like you can get a cup of coffee every time SQL Server needs to read a page from the hard drive. It's fast for each one, but if there are millions of pages to read, then things start to slow down. Ya know?
Anyway... by using a smaller data type, you may be able to get more rows per page, which would increase your performance on large tables. And... when I say large tables, I really mean 'more than a couple million rows'.
Also... there is no valid reason to avoid the numeric data type. ADO is perfectly happy with it. I use it all the time. In fact, if your other choice is Real/Float, then I would suggest you change immediately. The Real and Float data types are approximate data types, with weird issues that are easily fixed by using the numeric/decimal data type.
Basically, if you have large tables, then it is in your best interest to use a smaller data type. For smaller tables... not so important.
-George
"The great things about standards is that there are so many to choose from." - Fortune Cookie Wisdom