My guess is because the database can't do an exact match, reading from the beginning and moving on when the beginning of the attribute isn't a match, but instead the database has to examine the whole string of the attribute for the CONTAIN operation, you're seeing more db hits? This is only speculation.
Questions:
Can you provide the Profile for both the = and the CONTAINS queries so we can compare the two explanations?
Do you have any regular indexes specified on this attribute?
Have you looked at specifying a Full Text Search index on this data. If you're doing a fuzzy contains search, the Lucene index would be worth looking into.
CALL db.index.fulltext.queryNodes('document', '*95587*') yield node AS n WITH n WHERE ((n)-[{someAttribute: 'linkAnalisys'}]-()) RETURN n.number LIMIT 10