It seems to be something to do with having the country code at the beginning of the number? I've edited a contact to add +44 and it works as an iMessage (but seems a bit temperamental).
Also, the contacts then display differently - the one I've added +44 to shows the number, the others (starting 07xx) show the contact name - http://cl.ly/ZpAw
EDIT: think I've worked it out! If Messages.app is open, then it sends as an iMessage, if not, it sends as an SMS. When Messages is open I get the contact list as above, if it's not open, I don't see the phone number, just the name