It's more on the lines of testing certain features and functions that don't have a GUI but are driven off of data. For example, we have an application that sends SMS Text messages to contacts based upon dates, times, and other things stored in an SQL database. That application simply runs in the background with no GUI interaction. In order to test it, I need to execute UPDATE and INSERT statements in the SQL database. So, I use the ADO objects built in to TestComplete to create and execute queries and return ADO record set results. This is doable with Keyword Tests but the amount of "hoops" I've had to jump through to do so with a Keyword Test made it extremely cumbersome compared to the relatively few lines of code I had to write for Script.
But, meanwhile, when it comes to adding new GUI interaction steps and such, it's VERY easy to select "On Screen Action" Operation, use the finder tool to find the component I want, and then select the method and now I have a whole new step. And then, to parameterize it all and make it loopable with the wizard is VERY nice indeed. Both features have their advantages and particular uses and I can't necessarily say "Only keyword tests" or "Only scripts". For myself, I'm more comfortable with scripts since I started using TestComplete back at version 1.5 before Keyword Tests were available and so I'm used to doing everything in script code. Others may find Keywords easier. I think, though, in any testing team, you'll find that a blend of the two works very well to make for a nice set of automation.