Well, it is "cleaner" to have your homemade programs (for all users of the
system) in a separate directory. Nothing prevents your program in /usr/bin
from being overwritten if you install a package that happen to have picked
the same name as yours for one of its binaries.
See what http://www.pathname.com/fhs/pub/fhs-2.3.html#USRLOCALLOCALHIERARCHY
(the "Filesystem Hierarchy Standard") specifies:
The /usr/local hierarchy is for use by the system administrator when
installing software locally. It needs to be safe from being overwritten when
the system software is updated. It may be used for programs and data that are
shareable amongst a group of hosts, but not found in /usr.
Locally installed software must be placed within /usr/local rather than /usr
unless it is being installed to replace or upgrade software in /usr.
http://www.pathname.com/fhs/pub/fhs-2.3.html#FTN.AEN1450 (a note)
additionally says:
Software placed in / or /usr may be overwritten by system upgrades (though we
recommend that distributions do not overwrite data in /etc under these
circumstances). For this reason, local software must not be placed outside of
/usr/local without good reason.