There is no practical difference when they are used in the sense of superlative adverb "the most".
Unlike 가장, 제일 is also used as a noun ("the best") and makes adjectives in the form of 제일의, 제일인, etc.
- 한국 제일의 도시 = The best city in Korea.
- 내가 제일(로) 좋아하는 사람 = The one like the best.
- 피곤할 때는 자는 게 제일이다 = When you're tired, the best thing is to sleep.