I would prolly just get a twin bed with a guard rail thing on it so he doesn't fall out, as i can see the crib not being comfortable for a 3 year old, but if u want u can buy a new mattress and see if that helps then go ahead, or u can buy a toddler bed and a new mattress and see if that helps.
My older son was in a toddler bed at 1 year old (day before he turned a year old). But he asked for it and he was a big boy, and also acted more like a 3 year old, and was the average size of a 2 year old at 12 months old. By 18 months old he didn't like the toddler bed anymore and so we got him a twin bed, with a guard rail thing and he loves it. He is now 23 months old, and the size of a 4, 4.5 year old, and i couldn't imagine him still being in a crib.
It could possibly be something else that is bothering him, maybe nightmares? But if he's complaining the bed is uncomfortable then that's prolly it, and it's prolly the mattress since it was used before he used it and now he's been using it for 3 years, that's a long time for a crib mattress to be used.
Hope this helps, :D.