Author's Note: Before we get started, let me state for the record that I've never ported to or from a console. I've made stuff that's "cross platform" between Windows and Linux, but that's the Easy Mode form of porting. I've also taken features developed on a then-current PC and made them work more or less gracefully on machines a few processor generations behind the times, which is a task that has a lot in common with porting, except it's easier whenever it isn't impossible.
So you're making a videogame. And let's say this videogame is planned to release on multiple platforms: The FunBox, the WizBang, and the PC. You can't very well have your programmers jumping from machine to machine as they work, so you need to pick one specific platform as your development platform. Let's say you pick the FunBox. You get FunBox development machines for the team and you put them to work making your videogame.
So how do you handle porting? You can have a platform specialist working on the game in tandem with the rest of the team. The core team can make a build for the FunBox and then your WizBang guy gets it running on the WizBang. The problem is that plans change throughout development. Features get cut, effects are added, tweaked, removed, and then implemented in a different way. That's just part of development. But if you're paying someone to port this half-finished game as it gradually becomes a finished game, then a lot of their work is going to get thrown away. Programmer time is crazy expensive, and not the sort of time you want to be wasting like this. It makes more financial sense to let the game solidify on the FunBox, and then have your specialist come in and do the port once the game is nearly done.
However, if they develop the port after the core game is done, then they might not have enough time to finish the port. What will you do then? If you delay the game on the WizBang then the mega-corporation that makes the WizBang will be pissed. They might even have a contract that says you're not allowed to give the FunBox an "exclusive". If you delay the game on all platforms, then your publisher will crucify you because their timetable says this is going to be a Christmas release, and literally millions of dollars are hinging on that.
Halfway through development a problem comes up: In your game, you've got this elevator ride designed to hold the player still so you can pre-load the next section of gamespace. The player is exploring the factory, then they get in the elevator and the game loads up the sewers or whatever. Once the elevator ride ends, the game clears the factory from memory and the player seamlessly moves into the sewers. Except, you've got slightly less memory available on the WizBang, and there's not enough room for both the factory and sewers to be in memory at once. What do you do?
You can replace the elevator ride with a loading screen on the WizBang, but players will notice. People will say, "The WizBang has loading screens and the FunBox doesn't." WizBang will be pissed at you, and they have the power to make life really difficult for you. Also, there's some lines of dialog that happen during the elevator ride to keep it from getting too boring for the player. They're actually important to the plot, so we can't cut them. Do we want to make the player go through a loading screen and then also lock them in place for 30 seconds of dialog?