Most Sino-Japanese words could originally be used both transitively and intransitively, some even as all verb, noun and adjective, as they are in Classical Chinese. But since they have been more and more Japanized, many of them were assigned a fixed grammatical status like other native words.
完成 is almost exclusively intransitive nowadays. Dictionaries may say it's also transitive, but that usage has nearly died out in actual world (though not incomprehensible). Thus, if you'd like to use 完成 transitively, you should choose 完成させる.
実現 still retains the ambiguity, so unfortunately you're not able to know if a 実現する is "to realize" or "to be realized" without help of context. In your case, 夢を実現する is not ambiguous (because it takes を), but 夢を実現させる allows two interpretations: "realize one's dream" or "make one realize one's dream".