Smeargle is able to learn ANY move, even from legendary Pokémon. (Fusion Flare, Shadow Force, V-Create, ect.)
This is all because of the move Sketch. Smeargle can use Sketch to learn a move from another Pokémon permanently. For example, if you were in battle, and your opponent's Pokémon used Scratch, Smeargle could use Sketch. Sketch would then become Scratch.
After Smeargle learns a move by using Sketch, it learns Sketch again after 10 levels. If your Smeagle is too high-level to learn Sketch 4 times without getting to level 100, the solution is to trade in a heart scale to the move tutor so that you can learn Sketch again. If you decide that you don't want a move that you taught Smeargle, you can simply talk to the Move Deleter to delete that move.
The easiest way to teach Smeargle moves is by doing double battles with wild Pokémon. (you can only do this is B/W and B/W 2 ) Have your Smeargle with Sketch with you and then the Pokémon with the move that you want Smeargle to learn. After you get in a double battle, have your Pokémon use the move for Smeargle to learn, and then have your Smeargle use Sketch on it.
Hope this helped. Le' goodbye.