The entire tangent is really unnecessary, as I said I was making both from the get-go. As far as I can tell, there's a pretty strong consensus on the answer to the actual question being "just do it whichever way feels best", which isn't terribly great discussion material, but not everything is. C'est la vie I guess.
I've built several games, and i've built several frameworks(not necessary full engines, more in the vain of what SDL/SFML, but do a fair bit more then they do). my current approach is the depth-first. I pick a component and try to build it thoroughly, and test it thoroughly for example my core component features a well defined math, vector2/3/4 classes, matrix's, quaterinion, text, allocation schemes, etc. at the same time as i build them, I also port these components to other platforms. I also define what each component is built upon, so i can ensure in what order i need to build things out with. for example core is the basis of everything and would be built first, then the platform specific component(consisting of input handling, filestreams, keyboards, mouse, windows, etc), followed by the video and audio components, and then networking component. these 5 components comprise my primary framework which is used for small games(i plan to get around to a more though engine design in the future built upon this framework), by building the components in a depth based way, and by building each component for all the platforms i want to target, it gives me the ability to be flexible in design so that i can accommodate all the platforms i wish to hit, while attempting to maintain the vision for my original design.
at least, that's how i do things.