Well, it depends, really.
Gameplay - Halo 3. While Reach's certainly isn't bad, it tries too hard to be like Call of Duty, more "hardcore," or however you want to put it. Halo 3 has the classic Halo feel to it, which is better than what Reach had.
Story - Reach. Halo 3's story felt very... grand, epic, however you want to put it, and it was a satisfying close to an already great trilogy. However, I liked Reach's more for being more personal, and having more character development.
Graphics - This one's a bit of a tie. Halo 3's were good for its time, and they still are, aside from some low quality textures and less-than-ideal character animations. Meanwhile, Reach looks absolutely gorgeous, and its animations are great, in my opinion... but the motion blur in the game really drags it down, at least for me.
Multiplayer - I'm going to say Reach, but only for a few reasons. While I don't like the general multiplayer gameplay (For reasons said in the gameplay section, and also because many of the maps are repetitive due to overuse of Forge World), I do like the Anniversary Classic playlists for being more like a traditional Halo game while still feeling like a sort of evolution to the traditional gameplay. Meanwhile, custom games are still very fun thanks to Forge... if you can get your buddies to actually play Reach. I only have one friend who plays Reach; the others would rather do custom games in Halo 3, which is fine, but Reach gives a lot more options for custom game types/maps. However, in general, Reach is better for multiplayer.
Oddly, even though Reach beats Halo 3 in those above areas for me, I'd rather play Halo 3. While Reach does have a lot more options, and is technically better, I just have a lot more fun playing Halo 3.