Kanban requires a team of more senior and self-sufficient engineers who can manage their own work. It's also better for projects that are largely in a maintenance phase where you're constantly picking which fix to work on next out of your backlog.
Finally, scrum makes more sense for packaged software where you want to get into a regular rhythm of releases or where you have to bless defined releases (eg for App Store review). Kanban matches well with continuous delivery web environments where you never develop significant inventory of undelivered changes.
Edited to add: one more thing - scrum enforces certain types of communication about your project that with kanban you have to rely on company culture or external processes to manage. This tends to make scrum more effective the larger your engineering organization is.