There are two ways you can tackle this:
1) You just want to make cool things, but don't really care about the details
2) You really want to grok this stuff, and want to build stuff from scratch
This is roughly equivalent, in programmers terms, of learning a high-level language like .Net, PHP, Python etc... versus assembly/C.
Do you want to Just Make It Work(tm) without understanding the underlying libraries/platform? Or do you want to be able to build the libraries/platform?
For option 1, the Arduino is fantastic, and really can't be beat. For option 2, I'd say start with an 8 bit AVR, like AT tiny, grab a breadboard, come LEDs and a programmer, and pull your hair out until it starts making sense and the lights flash in the pattern you expect.
I took the second route, and have been very happy with my choice. Now, if (at my option) I just want to do something quick and dirty, I can grab an arduino and prototype something fast. But the thing is, I'm not constrained by that. I'm able to throw things together on a breadboard from components in a tray. I can write the code in straight C (or avr asm), and really grok the ISRs.
It's kind of like Processing (the platform for data visualization and artistic CG). Would you rather make fast animations that look great, are easy to make, but only run in the Processing environment? Or would you rather build your own cross platform UI stack and then create your own highly optimized animations?
I don't really agree with the "beginners" attitude towards Arduino, the same way I don't agree that Python is a good language for "beginner" programmers. We become programmers or amateur EE's for some reason - to solve some problem. If the problem you want to solve is that you want to be an expert developer, then don't start with python, start with c or asm. If you just have stuff you need to get done, python is great.
Same with EE, don't start with Arduino if your purpose is to really learn the stuff. You'll just be confused by the toolchain and helpful libraries.