There are case when there are "\" symbols in where clause which breaks correct SOQL query.
e.g. (select id from account where name = '\'somevalue')
In that case query which will be produced by String.escapeSingleQuotes will only escape single quote symbol but not "\". Therefore query which will be produced will be as "select id from account where name ='\\'somevalue'" and this SOQL query will be incorrect.
There are case when there are "\" symbols in where clause which breaks correct SOQL query.
e.g. (select id from account where name = '\'somevalue')
In that case query which will be produced by String.escapeSingleQuotes will only escape single quote symbol but not "\". Therefore query which will be produced will be as "select id from account where name ='\\'somevalue'" and this SOQL query will be incorrect.