So the problem with the first and last stairs have to do with the weight distribution, I think.
during mid-flight, (i.e. flight of stairs…um. another bad pun…), the rear wheels are taking about 70% of the weight (square root of 2, assuming that the robot is at 45 degrees!), rather than half of the weight. In the case of the last step, the downward weight vector on the front wheel is much smaller than it is while it’s climbing, i.e. it’s not pulling “up” as strongly, so has relatively smaller traction.
So you need to either have some way to dynamically change the weight distribution, which would make it more complex, or you could try using “stickier” rubber on the wheels - that would increase the normal forces that are the traction.
There’s an important point here, in response to one of your comments - adding rubber spikes to the wheels actually DECREASES your traction, this is because by using spikes, you decrease the amount of contact between the wheel and the ground. If you want maximum traction, you need very smooth, sticky rubber - this is exactly why formula 1 race cars have “slicks”, which provide maximum traction with the ground.