I just tested with
page.$('span')[2].text()
And it works fine (grails 2.2.3, geb 0.9.0, spock-grails-support:0.7-groovy-2.0) if you have more than one span in the page, you will get the content of the first one in your page if you don't specify an index.
Please provide some stack trace or error message to back your claim, as with what you have provided it is quite hard to help you.