This is a good discussion question. Thanks for posting it.
I look at this question as if I was flying and given those clearances, in the same situation, in fact I have several times.
One thing missing from your scenario is what airspace the airport is in, and what airspace you are in at 3000 feet.
I agree in this scenario, it would be a pilot deviation. My action would have been to stay at 3000 feet, for one simple reason, the controller did not clear the pilot to leave 3000 feet. This tells me that the controller is not done with the pilot yet, and needs to keep him to insure separation.
This happens to me coming into Martin State Airport in Maryland. If I am arriving on an IFR plan in VMC from the southeast, I frequently get cleared direct to the airport from 20+ miles out, but told to maintain 3000. After reporting the airport from 12 miles out, occasionally I am still held at 3000 and direct, eventually I am overflying the class D for Martin State, then when nearly directly over the airport I am given a visual approach and handed over to the tower. One time I think I was told to enter a downwind. I know they do this because of the jet traffic coming out of Martin State that would be headed right at me as I was approaching, I appreciate them keeping me separated. Thanks to Speed Brakes on my Bonanza, (which turns the V35B into an elevator), I have no trouble making the approach to land.
In regards to someone saying it was a controller error, I expect that comes from the controller telling the pilot to enter a downwind, which is not usually given by the controller unless he is handing him off. So that may have confused the pilot, but even so the pilot was not given a clearance to leave 3000, and he should stay there, or ask for lower.
That is how I see it, but I am sure there are many good opposing arguments too.
Thanks for the great question, and the opportunity to discuss it.
Have a Happy New Year,