What is wrong with my rewrite rule for a page URL with query parameters and short codes?

The reason you are getting a 404 is that the rewrite rule do not change the request URL as reported sin $_SERVER[REQUEST_URI] variable of PHP, and wordpress parses that variable when deciding what content is request and since there is no such page /cdl-manual/arizona/ it displays a 404.

What you need is a wordpress rewrite rule to parse the url the way you want it, but I suggest you just go simple and create 50 sub pages one of each state. It can be a little annoying but probably as fast as writing and debugging code to do what you want and much more future prof when it comes to further per state customization.