i'd suggest that there may be a fuel system restriction. Here's the scenario.
At top speed the engine is sucking up a lot of fuel from the tiny float bowl. This fuel must be replaced at least as quickly as it is being used. If it's not, fuel level in the bowl drops.
This drop in fuel level makes the engine run a bit hot and lean for a moment and power output is quite good.
But since the engine continues to demand fuel at a high rate, the leanness is closely followed by a further drop in float level until a there's complete lack of available fuel.. and the engine starves and the bike slows down.
Fuel is still entering the float bowl and refills it. The engine then sucks some up and begins to output power again, and the bike speeds up for a moment.
The engine is hunting for fuel..
Pull the fuel inlet hose off the carburetor and drain some into a clean glass container. Fuel should flow in a thick steady stream. If not, check upstream for obstructions.. (some kinda dirtly fuel screen or filter)
Dirt or rust clogging something in the carb is possible..
Another possibility is that fuel level in the gas tank was low.. fuel splashes around and is not continuously supplied to the carburetor..
I used to have a bike with a carb that just could not keep up with the engine's demand for fuel.. Everything was in perfect tune and clean.. Symptoms were very similar to yours.
After a very difficult diagnosis i ended up enlarging the carb's intake float valve orifice and it was cured.. But this is not a common situation. A clean, properly adjusted carburetor normally supplies far more than required.
long freakin post.. maybe cause im wired on coffee and cant sleep..