According to Webster's not much. I'd say they were synonyms.

Shoal: a large group or number : CROWD <a shoal of fish>

School: a large number of fish or aquatic animals of one kind swimming together

http://www.m-w.com/dictionary.htm

While the definitions of "shoal" and "school" provided by Webster's dictionary seem similar, there is a subtle difference in the way they are used to describe groups of fish or aquatic animals.

A "shoal" refers to a large group or number of fish or aquatic animals. It emphasizes the idea of a crowd or multitude of individuals. For example, you might say, "There was a shoal of fish swimming in the river."

On the other hand, a "school" also refers to a large number of fish or aquatic animals of one kind swimming together. However, "school" implies a higher level of organization or coordination within the group. Fish in a school tend to swim in a synchronized manner and move together as a cohesive unit. So, you could say, "I saw a school of fish swimming in perfect formation."

Essentially, "shoal" focuses more on the quantity or size of the group, while "school" highlights the synchronized behavior of the group. They are not exact synonyms, but rather have slightly different connotations when describing groups of fish or aquatic animals.