This may be an unpopular opinion, but I like it. Rain is accepted as a name, and words meaning rainbow are accepted as names in other cultures (like Keshet in Hebrew), so I don't see why it wouldn't work in English.
It would be cute to name a child Rainbow but call him/her Rain as Rainbow may seem weird to people...so it would be a nice surprise to find out that the full name is Rainbow. I like it.