Not sure whether this is a bug or user error, but the JSAPI does not appear to support scaling visual variable sizes to real-world distance units. Instead, it creates giant black squares. See the codepen, taken from ESRI's csvLayer example, modified to use a size visual variable that should scale with horizontal error (miles)
Looks like you were 95% of the way there. Just a couple typos in the code. Note that the codepen doesn't play nicely with the hosted csv file, but if you host the app locally you will see the earthquakes.
Is there a reason the symbols get cut off when you zoom in?
Yes, unfortunately. This is a known issue we are currently investigating.