Combine milk and orange zest in a small heavy saucepan. Bring almost to a simmer over low heat. Remove pan from heat, cover and let stand for 30 minutes.
Whisk egg, sugar and flour in a bowl until smooth.
Rewarm milk over low heat until steaming. Gradually add milk to the egg mixture, whisking constantly. Return mixture to saucepan.
Cook sauce over low heat, stirring constantly, until thick enough to coat the back of a spoon, 7 to 8 minutes. (Do not allow sauce to come to a simmer.) Remove from heat.
Pour sauce through a fine-meshed sieve into a bowl. Discard orange zest. Stir in Grand Marnier, if using. Place plastic wrap directly on the surface of the sauce and refrigerate until cold, about 2 hours.