Pointing "directly" to an S3 bucket (e.g. using s3fs) is "probably" a bad idea. e.g. https://stackoverflow.com/questions/10801158/how-stable-is-s3fs-to-mount-an-amazon-s3-bucket-as-a-local-directory
EBS is almost certainly the right place to store the data for access by GeoServer.
100 GB is very manageably by EBS standards. (Maximum volume size is 16 Terabytes!)
I might suggest to store the original data in S3 and then replicate onto your instances as needed, using AWS CLI tools to sync the contents of an S3 folder to your local instance with a single command. http://docs.aws.amazon.com/cli/latest/reference/s3/sync.html). S3 is arguably redundant, but I find that it adds flexibility and convenience.
Side note: If you are planning to use large multi-core instances anyway AND you know the data volume is not likely to grow unexpectedly AND you are able to auto-build your instances, you could actually consider using instance storage ("ephemeral storage") because your original data will be safe in S3, you can save on EBS fees, and instance storage can be slightly faster than EBS in some cases.