There are probably as many reasons why people use Tcl/Tk as there are Tcl developers, but a number of reasons keep coming up again and again.
The most important reason why people use Tcl is that it gets their job done faster. In many cases you can implement applications 5-10x faster with Tcl than with other languages, especially if the application involves GUIs, string-handling, or integration. Once an application is built in Tcl, it can also be evolved rapidly to meet changing needs.
Graphical user interfaces
With its Tk toolkit, Tcl provides facilities for creating GUIs that are incredibly simple yet remarkably powerful. For example, the Tk canvas widget makes it easy to create displays with graphics, yet it also provides powerful facilities such as bindings and tags. The text widget provides sophisticated hypertext capabilities and more. Tk was designed from the ground up for the rapid development inherent in dynamic programming languages like Tcl; other, C++ based toolkits lack the simplicity and power of Tk.
Tcl/Tk runs on Windows, Macintosh, and nearly every imaginable Unix platform. It provides high-level API's that let you write code that works the same — everywhere — while Tcl/Tk worries about respecting platform differences, such as native look and feel for GUI's.
Easy to learn
Tcl is a very simple language. Experienced programmers can learn Tcl and produce their first interesting application in just a few hours or days. Casual programmers can also learn Tcl quickly. Tcl is often used in situations where experienced programmers create a base set of facilities, and more casual programmers write Tcl scripts to customize those facilities, create business rules, etc.
Mature but Evolving
Tcl and Tk have been under continuous, active development and use by a large group of developers since the early 1990's. Because of this, Tcl has had a long time to get right all those "finishing touches" real applications depend on: rock solid reliability, rich internationalization support, thread safety, high performance, portability, integration, networking support and more. And because Tcl is constantly evolving, new cutting edge features are being added all the time, yet always with an eye to the consistent quality and concern for backwards compatibility that Tcl has always been known for.
Extend, Embed and Integrate
Tcl is unmatched when it comes to integrating with other software. You can easily include Tcl as an embedded scripting language in an application, or make existing C, C++, or Java code look like it was built right into Tcl. The same features make it easy to use Tcl as a control language for special-purpose hardware or protocols, add a new GUI or network interface to legacy applications, and more.
Dynamic languages often make deployment harder, because you need to get both the language interpreter and the application scripts onto the target machine. Most dynamic languages provide tools to "compile" everything into a single executable (Tcl has had that too, since about 1993). But Tcl/Tk goes way beyond those simple solutions, using technologies like the Tcl Virtual File System, and Starkits and Starpacks to make deployment more flexible, powerful and transparent. Other options allow commercial applications to protect their intellectual property, a rare capability in dynamic languages.
Tcl is an ideal language to use for automated hardware and software testing, and it may well be the dominant language used for this purpose. With Tcl you can easily connect to testing hardware or internal APIs of an application, invoke test functions, check the results, and report errors. Tcl's interpreted implementation allows tests to be created rapidly, and the tests can be saved as Tcl script files to reuse for regression testing. If you are testing a software application, Tcl allows you to connect directly to lower-level APIs within the application, which provides much more precise and complete testing.
Tcl has a rich and powerful event-driven programming model that makes network programming easy, allowing clients and servers to be created with just a few lines of code. Networking, files, GUI events — all work the same way, making for a consistent, easy to learn and powerful programming style, without relying on extra libraries.
The Tcl community
Another attractive reason for using Tcl is the large and helpful community of Tcl users and developers. The Tcl community is a constant source of ideas, free extensions, applications, and technical support.
Tcl is open source — freely available, meaning you can do anything you want with it, including modifying it to suit your own needs or incorporating it into commercial products, no strings attached.