Is not a common situation, but it's a situation. There is a big I can say amount of coders who, when they're creating tables (eg user), are using:
Code:
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`....bla...bla...bla......
while professional coders are using:
Code:
CREATE TABLE IF NOT EXISTS `user`....bla...bla...bla......
What's the difference. Let's say that I'm following the first way and in the database there is already a table named "user". My code will drops that table and will create mine. So my script will works (because yes, same names, but structure is almost always different).
You, are following the second way. As you code will see that there is already a table with name "user" will bypass the creation of your code. So your script will not works.
This was very common problem some 10 years ago when Hosting providers were giving just one database in their hosting plans. Now, they're giving many, so most webmasters are using a database per script. If not, they're in risk at some day to try to install a script in the same database having tables with same names.
That's was the reason for exististin of TABLE_PREFIX.