It could be because of their name - stupidly some Pokemon cannot be traded without nicknames because their regular name contains a swear word. See this question.
Also, if the Pokemon you are offering is not yours (i.e. you got it from a friend) it could be hacked, so the game won't let you trade it. This is very likely if it's a shiny legendary, especially one like Keldeo or Genesect that haven't been officially released yet.