I don't know if I should be embarrassed to admit that the Terminal application is the single most important driver as to which operating system I use, but I guess it's okay as long as I realize it's not everyone's.
Arcane commands to move between tabs/windows, command keys going to the window and not the terminal (such as pageup, pagedown, home, end), limited configurability and a middle button paste in an ecosystem without middle buttons... all kept me from seeing terminal.app as more than just something to be immediately replaced.
Your experience is obviously different than mine, but I ditched terminal.app as soon as I learned about iTerm2.
To your points - Tabs are cmd+shift { }, which feel very natural on my keyboard given the location of cmd+shift - you 'chord" thumb+little finger and then switch windows with your right hand (or maybe it's just entered my finger DNA).
Windows Switching is the OS X standard Cmd+`
PageUp/Page down are just your standard Fn+Up/Down - but, I'll admit I just normally use the touch pad it's so fast, particularly with two+finger drag + acceleration.
The loss of the middle put-on would probably be painful - but I've never had one, so no huge impact to me personally. (Copy/Paste are, once again, touch pad reflexes that I do constantly).
But - with all that said - I really should spend more time with iTerm2 - lots of people rave about it. Time to give it another try.
Things I like about putty include that you can launch a profile very quickly (start->run, putty @profile_name); it's easy to carry a configuration around (copy a bit of the registry); fonts are fine; easy colour configuration for profiles; quick-switching to full-screen; you can alt-tab between terminals. OSX has workspaces which is an advantage, but lacks some of the others.
But I get the feeling you're talking about the terminal itself - what's the edge for the OSX approach?
And - wear your terminal with pride! 7-day roguelike is next week if you've ever wanted to have a go.
Terminal.App has a wonderful and instant resizing capability. And it's integration with the MacBook Pro/Air's touch pad is, really, second to none.
But, the wrap issue is annoying - you can't do a ps -auxwww , see that the line length is too long, and the resize the window and have your text rewrap. (At least on putty 0.6, the version on my vm instance)
I don't know if they've added tabs to putty (a quick search through http://the.earth.li/~sgtatham/putty/0.62/puttydoc.txt indicates they haven't) - and that's also a feature I use a lot of.
Don't get me wrong - I love putty, and it's one of the first two or three things I put on every windows system. I love that you can use it as a serial console as well - great for consoling into cisco routers - particularly now that Microsoft in it's infinite wisdom has dropped hyper terminal. In fact, Putty is better than terminal.app in that regard - Terminal.app doesn't do console ports!
But, if I am spending many thousands of hours at the console, Terminal.app (or, possibly iTerm) is going to make me happier and more productive than putty. Probably not 2x more productive, or even 50% more productive - but certainly 10%, which is enough for me.
You're right that putty doesn't do this, but I always run screen inside putty, which will rewrap text when the window resizes.
On my personal machine, I basically only use Firefox, Sublime Text 2, and Terminal anymore.
My ideal dev environment is Windows running putty connecting to a local linux VM or a bunch of VMs running on a nearby ESXi server and then Firefox (and occasionally Chrome and IE for compatability testing) and a bunch of other general stuff (Thunderbird for email, Skype, music player, etc).
On a dual screen machine I'll have the putty window (or windows) made fully screen on one monitor and the remaining stuff on the other monitor. Inside the ssh session I run screen to give me multiple shells without lots of windows or tabs. A lot of my navigation is done via the keyboard.
The desktop machine is also for family and guest usage so the ability to switch user accounts but leave existing stuff running is a must.
This setup means I can also login from pretty much anywhere (that I can get an ssh connection from) and resume where I left off, including having tunnelled HTTP connections to my dev network via ssh.