The main "pro" of Uinty3D is that it's crazy fast. I'm not talking about performance here, but about development speed. You have:
- Unified asset pipeline. No need to spend time on resource subsystem at all, no buggy import routines to write and fix: just drop a file into folder, and it works.
- Integrated level editor. No need to spend time on level tools: just get straight to business.
- Great tweaking and debugging support: all your gameplay variables are shown right as you play, and can be changed on the fly too - and all this without writing a single line of code. Pause the game anytime, or step through code one statement at a time.
- Quite comprehesive library of ready-made components. Rendering, sound, physics, controls - a lot of "boilerplate" code is already written.
- Mono as a script host. While one can argue about merits of C# as a language, Mono's base class library offers a wealth of functions. Collections, I/O, multithreading, and insanely expressive LINQ all speed up development considerably.
Also, Unity3d is really good on multiple platforms. Of course, you can't create, say, a windows .exe game and then magically have it "just work" on the iPhone; but Unity gets pretty close to that. What is required is "tweaking" more than "porting".
Of course, in some cases Unity3D is not ideal. Network multiplayer integrated in Unity is OK for some LAN peer-to-peer play, but anything that requires central server pretty much requires you write all network code from scratch. Unity's GUI system is quite quirky and slow, so making complex in-game GUIs is a pain. However, all other game GUI systems I've seen are painful too, so Unity's one is not that bad overall.
And, of course, Unity3D is a little less flexible than "game engines" like OGRE, that offer only a library/source code. Its performance is not exactly top-notch, and since you only have a scripting sandbox, you can't use some clever low-level hacks to improve it. For example, if Unity's built-in tree renderer doesn't satisfy you for some reason, you can't write your own one (well, you could, but it would be working through scripts and most probably be too slow and too much hassle). Still, it's possible to do just about anything with Unity so long as you don't mind losing a bit of performance.
The biggest "con" of Unity3D, though, is source control. As already mentioned, Unity's own Asset Server costs a pretty penny. And it sucks, really, really hard. It doesn't even have branching. While Unity3D theoretically supports 3rd-party SCM systems, using them is wrought with peril too. I've seen import settings "magically" change after SVN commit, or all objects' parameters disappear after using Perforce. All these can be worked around, but anyway, Unity3D + Source control = pain.
So, to actually answer your question. I believe Unity3D is one of the best, if not the best, choice of game engine for a "little" game. Especially in prototype stage.
That said, if we're talking about an educational project, I' recommend against it. To learn how games work it's better to write one on as low level as possible. Game engines are a great tool; but to use it for maximum gains, it's necessary to understand how they work, and why they work that way. And the best way to learn this is write your own game engine - even if it turns out crappy in the end.