You only need separate columns if your queries are going to process them separately. That's why last names are usually in separate columns so you can sort and search on them.
In fact, if you could guarantee all names were entered as "Doe, John T", you could get away with just one column for the whole name.
I can think of no situation in which you'd want to search on the middle initial alone, and the first/initial column will always be entered as "John T", never as "T, John" so I don't believe you gain anything (search-wise) by separating them.
However, one possibility springs to mind: personalized letters. You may want to send a letter to a person in the database starting with "Dear John". In that case, it would be advantageous to separate them.